HAProxy yeniden yükleme - eski süreçler hiç sonlandırılmadı


15

TCP modunda, 120s istemci / sunucu / bağlantı zaman aşımı ile HAProxy kurulumu var.

Yapılandırmayı çok hızlı yeniden yüklediğimde, bazen birden fazla işlemle sonuçlanırım. Tasarım gereği, bu beklenir, böylece kurulan tüm bağlantılar boşaltılır.

Benim sorunum, tüm bağlantılar kapalı olsa bile, asla sonlandırılmamasıdır.

ps aux | HAProxy

    haproxy  12483  0.0  0.1 103748  1084 ?        Ss   20:45   0:00 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf 12405
    haproxy  12485  0.0  0.1 103748  1088 ?        Ss   20:45   0:00 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf 12405
    haproxy  12487  0.0  0.1 103748  1084 ?        Ss   20:45   0:00 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf 12405
    haproxy  25115  0.0  0.1 103748  1084 ?        Ss   21:26   0:00 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf 12488

netstat-pantolon | grep haproxy

tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      25115/haproxy
    tcp        0      0 0.0.0.0:1936                0.0.0.0:*                   LISTEN      25115/haproxy
    tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      25115/haproxy

120'lerin zaman aşımından daha uzun süre bekledim. Onları neyin tuttuğunu anlamıyorum.

Bu eski işlemlerden biri için aşağıdaki lsof TCP LISTEN için hala bazı FD olduğunu gösterir

# lsof -p 12483
COMMAND   PID    USER   FD   TYPE  DEVICE SIZE/OFF   NODE NAME
haproxy 12483 haproxy  cwd    DIR   202,1     4096      2 /
haproxy 12483 haproxy  rtd    DIR   202,1     4096      2 /
haproxy 12483 haproxy  txt    REG   202,1  4381869 412355 /usr/local/sbin/haproxy
haproxy 12483 haproxy  mem    REG   202,1    62864 396140 /lib64/libnss_files-2.17.so
haproxy 12483 haproxy  mem    REG   202,1   126288 396526 /usr/lib64/libselinux.so.1
haproxy 12483 haproxy  mem    REG   202,1   141760 396148 /lib64/libpthread-2.17.so
haproxy 12483 haproxy  mem    REG   202,1    89312 396076 /lib64/libgcc_s-4.8.2-20140120.so.1
haproxy 12483 haproxy  mem    REG   202,1    98720 396150 /lib64/libresolv-2.17.so
haproxy 12483 haproxy  mem    REG   202,1    13224 396957 /lib64/libkeyutils.so.1.5
haproxy 12483 haproxy  mem    REG   202,1    43768 396966 /lib64/libkrb5support.so.0.1
haproxy 12483 haproxy  mem    REG   202,1    19512 396128 /lib64/libdl-2.17.so
haproxy 12483 haproxy  mem    REG   202,1   170784 396962 /lib64/libk5crypto.so.3.1
haproxy 12483 haproxy  mem    REG   202,1    12744 396594 /usr/lib64/libcom_err.so.2.1
haproxy 12483 haproxy  mem    REG   202,1   937952 396964 /lib64/libkrb5.so.3.3
haproxy 12483 haproxy  mem    REG   202,1   273672 396958 /lib64/libgssapi_krb5.so.2.2
haproxy 12483 haproxy  mem    REG   202,1   486512 396073 /lib64/libfreebl3.so
haproxy 12483 haproxy  mem    REG   202,1  2000552 396122 /lib64/libc-2.17.so
haproxy 12483 haproxy  mem    REG   202,1  1967496 400756 /lib64/libcrypto.so.1.0.1j
haproxy 12483 haproxy  mem    REG   202,1   445424 400761 /usr/lib64/libssl.so.1.0.1j
haproxy 12483 haproxy  mem    REG   202,1    88568 396529 /lib64/libz.so.1.2.7
haproxy 12483 haproxy  mem    REG   202,1    36856 396126 /lib64/libcrypt-2.17.so
haproxy 12483 haproxy  mem    REG   202,1   152376 396115 /lib64/ld-2.17.so
haproxy 12483 haproxy    0u  0000     0,9        0   5420 anon_inode
haproxy 12483 haproxy    4u  IPv4 1435667      0t0    TCP *:http (LISTEN)
haproxy 12483 haproxy    5u  IPv4 1435668      0t0    TCP *:https (LISTEN)
haproxy 12483 haproxy    6u  IPv4 1435673      0t0    TCP *:jetcmeserver (LISTEN)

Hmm, yani eski süreç hala benzeyen dinleyiciye sahip mi? -sfYapılandırmanızda ne var ? Yeni süreç işaret ediliyor -sf 12488(ve 12488çalışmıyor), ancak 12483dinleyiciyi başarılı bir şekilde almak için işaret etmesi gereken süreç gibi görünüyor .
Shane Madden

A strace -p 13483, bu işlemin ne yaptığını (veya üzerinde vb.) Neler olduğunu göstermeye yardımcı olabilir.
wurtel

ShaneMadden , tüm süreçlerin dinleyicileri var, ama sadece son süreç TCP'yi gerçekten dinliyor (netstat tabanlı). İşlem 12488 artık mevcut değil, bir şekilde sonlandırıldı. wurtel , strace tekrarını gösterir:gettimeofday({1417009573, 706535}, NULL) = 0 gettimeofday({1417009573, 706629}, NULL) = 0 epoll_wait(0, {}, 200, 1000)
Bastien974 26:14

@ Bastien974 Sorunun çözümünü bulabildiniz mi? Aynı sorunu görüyorum.
pradeepchhetri

Yanıtlar:


1

Bu bana sadece birkaç gün önce oldu ... Makul bir cevap yok, muhtemelen, süreç hala kullanılmayan bağlantılar nedeniyle hiç bitmedi. 2 HaProxy'im var ve normal çalışma sırasında bağlantıları olmadığı için bu durum hiçbir zaman ikincil olayda olmadı.

Bir yayınladı SIGTERM komutu, ya da sadece olabilir ÖLDÜRÜR eski PID ve ince.

Sadece eski alabilirsiniz PID gelen HAProxy durum sayfasında . Birkaç kez ferahlatıcı eski ve yeni süreci rastgele görüyordum.

Eskisini öldürdükten sonra, isteklere cevap veren tek süreç yeni süreçti.

:)


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.