Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Troubleshooting и отладка
troubleshooting

Troubleshooting и отладка

tcpdump, логи ошибок, debug mode, common issues

Troubleshooting и отладка HAProxy

tcpdump, логи ошибок, debug mode, common issues.

#Включение debug режима

#Временный debug лог

global log /dev/log local0 debug

Перезапуск:

sudo systemctl restart haproxy

Важно: Не использовать в production долго — огромный объём логов.

#Debug через stats socket

# Включить debug для конкретного frontend echo "set debug dev frontend http_front" | socat /var/run/haproxy/admin.sock stdio # Выключить echo "set debug dev frontend http_front off" | socat /var/run/haproxy/admin.sock stdio

#Анализ логов

#Чтение логов в реальном времени

tail -f /var/log/haproxy.log

#Поиск ошибок

# Ошибки 5xx grep " 5[0-9][0-9] " /var/log/haproxy.log # Таймауты grep -i "timeout" /var/log/haproxy.log # Ошибки подключения grep -i "connection refused\|cannot connect" /var/log/haproxy.log # Health check failures grep "DOWN\|UP" /var/log/haproxy.log

#Статистика по статусам

# Подсчёт по статусам awk '{print $15}' /var/log/haproxy.log | sort | uniq -c | sort -rn # Топ URL awk -F'"' '{print $2}' /var/log/haproxy.log | awk '{print $2}' | sort | uniq -c | sort -rn | head -20

#Анализ таймингов

# Среднее время ответа awk '{print $15}' /var/log/haproxy.log | awk -F'/' '{sum+=$4; count++} END {print sum/count}' # Медленные запросы (>1s) awk '{if ($18 > 1000) print}' /var/log/haproxy.log

#tcpdump

#Базовый захват трафика

# Захват на порту 80 sudo tcpdump -i any -s 0 -w haproxy.pcap port 80 # Захват на порту 443 sudo tcpdump -i any -s 0 -w haproxy-https.pcap port 443 # Захват с фильтром по IP sudo tcpdump -i any -s 0 -w haproxy.pcap host 192.168.1.10

Параметры:

  • -i any — все интерфейсы
  • -s 0 — полный пакет (не обрезать)
  • -w — запись в файл

#Анализ в Wireshark

# Открыть файл wireshark haproxy.pcap # Или в командной строке tshark -r haproxy.pcap -Y "http"

#Фильтры Wireshark

# HTTP запросы
http.request

# HTTP ответы
http.response

# Ошибки 5xx
http.response.code >= 500

# Медленные запросы
tcp.analysis.ack_rtt > 1

# TCP retransmission
tcp.analysis.retransmission

#Живой анализ

# Захват и вывод в реальном времени sudo tcpdump -i any -s 0 -A port 80 | grep -E "GET|POST|HTTP" # Только заголовки sudo tcpdump -i any -s 0 -A port 80 | head -100

#HAProxy stats страница

#Проверка статуса серверов

http://haproxy:8404/

Что смотреть:

  • Status (UP/DOWN)
  • Last check
  • Response time
  • Queue
  • Errors

#Статистика через CLI

# Общая информация echo "show info" | socat /var/run/haproxy/admin.sock stdio # Детальная статистика echo "show stat" | socat /var/run/haproxy/admin.sock stdio # Статус серверов echo "show servers state" | socat /var/run/haproxy/admin.sock stdio

#CSV формат для анализа

# Экспорт в CSV echo "show stat" | socat /var/run/haproxy/admin.sock stdio | tail -n +2 > haproxy-stats.csv # Анализ в Python/pandas import pandas as pd df = pd.read_csv('haproxy-stats.csv')

#Проверка конфигурации

#Синтаксис

# Проверка синтаксиса sudo haproxy -c -f /etc/haproxy/haproxy.cfg # Проверка с выводом ошибок sudo haproxy -c -f /etc/haproxy/haproxy.cfg 2>&1

#Dump конфигурации

# Показать эффективную конфигурацию echo "show conf" | socat /var/run/haproxy/admin.sock stdio

#Common Issues

#503 Service Unavailable

Причины:

  • Все backend серверы DOWN
  • Превышен maxconn
  • Очередь заполнена

Диагностика:

# Проверка статуса серверов echo "show servers state" | socat /var/run/haproxy/admin.sock stdio # Проверка очереди echo "show stat" | socat /var/run/haproxy/admin.sock stdio | grep Queue

Решение:

# Увеличить maxconn global maxconn 50000 backend web_servers timeout queue 30s

#504 Gateway Timeout

Причины:

  • Backend не отвечает в timeout server
  • Медленный backend

Диагностика:

# Поиск таймаутов в логах grep "504" /var/log/haproxy.log # Проверка времени ответа awk '{if ($15 == 504) print $18}' /var/log/haproxy.log

Решение:

defaults # Увеличить timeout timeout server 60s # Health check option httpchk GET /health http-check expect status 200

#502 Bad Gateway

Причины:

  • Backend закрыл соединение
  • Backend вернул невалидный ответ
  • SSL handshake failed

Диагностика:

# Логи с ошибками grep "502" /var/log/haproxy.log # Проверка backend curl -v http://backend:8080/

Решение:

backend web_servers # Retry при ошибке retries 3 option redispatch # Health check option httpchk GET /health

#Backend серверы постоянно DOWN/UP

Причины:

  • Слишком агрессивные health checks
  • Проблемы с сетью
  • Backend перегружен

Диагностика:

# Логи health checks grep "DOWN\|UP" /var/log/haproxy.log # Проверка health check endpoint curl -v http://backend:8080/health

Решение:

backend web_servers # Более мягкие проверки server web1 192.168.1.10:8080 check inter 10s fall 5 rise 3 # Fastinter для быстрого восстановления server web1 192.168.1.10:8080 check inter 10s fastinter 2s fall 5 rise 3

#Высокая latency

Причины:

  • Перегруженный backend
  • Сетевые проблемы
  • Очередь запросов

Диагностика:

# Анализ таймингов awk '{print $15}' /var/log/haproxy.log | awk -F'/' '{print "Tq="$1", Tw="$2", Tc="$3", Tr="$4", Ta="$5}' | head -20 # Проверка очереди echo "show stat" | socat /var/run/haproxy/admin.sock stdio | grep Queue

Решение:

backend web_servers # Балансировка balance leastconn # Увеличить число серверов server web1 192.168.1.10:8080 check maxconn 100 server web2 192.168.1.11:8080 check maxconn 100

#SSL/TLS ошибки

Причины:

  • Неправильный сертификат
  • Cipher mismatch
  • TLS version mismatch

Диагностика:

# Проверка SSL подключения openssl s_client -connect example.com:443 -servername example.com # Проверка сертификата openssl x509 -in /etc/haproxy/certs/site.pem -text -noout

Решение:

global # Современные cipher suites ssl-default-bind-ciphers ECDHE+AESGCM:DHE+AESGCM ssl-default-bind-options ssl-min-ver TLSv1.2 frontend https_front bind *:443 ssl crt /etc/haproxy/certs/site.pem

#Performance troubleshooting

#CPU usage

# Top процессы top -p $(pidof haproxy) # CPU по потокам top -H -p $(pidof haproxy)

#Memory usage

# Потребление памяти cat /proc/$(pidof haproxy)/status | grep Vm # Проверка утечек watch -n 1 'cat /proc/$(pidof haproxy)/status | grep VmRSS'

#Network

# Сетевая статистика netstat -s | grep -i error # Соединения ss -s # Трафик iftop -P -n -p "port 80 or port 443"

#Debug tools

#HAProxy debug build

# Сборка с debug символами make DEBUG=-g # Запуск в debug режиме haproxy -d -f /etc/haproxy/haproxy.cfg

#strace

# Трассировка системных вызовов sudo strace -p $(pidof haproxy) -f -o haproxy-strace.log # Только network вызовы sudo strace -p $(pidof haproxy) -e trace=network

#perf

# Профилирование CPU sudo perf top -p $(pidof haproxy) # Запись для анализа sudo perf record -p $(pidof haproxy) -g -- sleep 30 sudo perf report

#Full Example: Debug session

# 1. Проверка статуса echo "show stat" | socat /var/run/haproxy/admin.sock stdio # 2. Проверка логов tail -100 /var/log/haproxy.log # 3. Захват трафика sudo tcpdump -i any -s 0 -w debug.pcap port 80 or port 443 # 4. Воспроизведение проблемы curl -v http://example.com/api/slow-endpoint # 5. Остановка захвата # Ctrl+C в tcpdump # 6. Анализ в Wireshark wireshark debug.pcap # 7. Проверка backend curl -v http://backend:8080/api/slow-endpoint # 8. Включение debug логов (осторожно!) # Edit /etc/haproxy/haproxy.cfg: log /dev/log local0 debug sudo systemctl restart haproxy # 9. Воспроизведение и анализ # 10. Выключение debug # Edit /etc/haproxy/haproxy.cfg: log /dev/log local0 info sudo systemctl restart haproxy

#Best Practices

#Логирование

# ✅ Production log /dev/log local0 info # ✅ Troubleshooting (временно) # log /dev/log local0 debug # ❌ Production (слишком много) # log /dev/log local0 debug

#tcpdump

# ✅ Запись в файл для анализа sudo tcpdump -i any -s 0 -w debug.pcap port 80 # ❌ Вывод в терминал (потеря данных) # sudo tcpdump -i any port 80

#Debug режим

# ✅ Временно для отладки # Включить, воспроизвести проблему, выключить # ❌ Оставить включённым в production # Огромные логи, влияние на производительность

Далее: Production кейсы