HAProxy reload - กระบวนการเก่าไม่เคยยุติ


15

ฉันมีการตั้งค่า HAProxy ในโหมด TCP กับไคลเอนต์ / เซิร์ฟเวอร์ / เชื่อมต่อหมดเวลา 120 วินาที

เมื่อฉันโหลดการกำหนดค่าเร็วเกินไปบางครั้งฉันก็จบลงด้วยกระบวนการหลายอย่าง จากการออกแบบสิ่งนี้คาดว่าจะเกิดขึ้นดังนั้นการเชื่อมต่อที่สร้างขึ้นทั้งหมดจะถูกระบายออกไป

ปัญหาของฉันคือพวกเขาไม่เคยยุติแม้ว่าการเชื่อมต่อทั้งหมดจะปิด

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 -pant | 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 ฉันไม่เข้าใจสิ่งที่ถือไว้

lsof ต่อไปนี้สำหรับหนึ่งในกระบวนการเก่าเหล่านั้นแสดงว่ายังมี FD บางอย่างสำหรับ TCP LISTEN

# 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)

อืมกระบวนการเก่ายังเป็นของผู้ฟังที่ดูเหมือน การเติม-sfในการกำหนดค่าของคุณคืออะไร? กระบวนการที่ใหม่กว่านั้นชี้ไปที่-sf 12488(และ12488ไม่ได้ทำงานอยู่) แต่ดูเหมือนว่า12483เป็นกระบวนการที่ต้องใช้เพื่อให้ผู้ฟังประสบความสำเร็จ
Shane Madden

strace -p 13483อาจช่วยในการแสดงสิ่งที่กระบวนการที่จะทำ (หรือบล็อก ฯลฯ )
wurtel

ShaneMaddenกระบวนการทั้งหมดเป็นเจ้าของ Listeners แต่มีเพียงกระบวนการสุดท้ายเท่านั้นที่ฟัง TCP (ขึ้นอยู่กับ netstat) กระบวนการ 12488 ไม่มีอยู่อีกต่อไปมันถูกยกเลิกอย่างใด wurtel , strace แสดงการซ้ำซ้อนของ:gettimeofday({1417009573, 706535}, NULL) = 0 gettimeofday({1417009573, 706629}, NULL) = 0 epoll_wait(0, {}, 200, 1000)
Bastien974

@ Bastien974 คุณสามารถค้นหาวิธีแก้ไขปัญหาได้หรือไม่ ฉันเห็นปัญหาเดียวกัน
pradeepchhetri

คำตอบ:


1

เรื่องนี้เกิดขึ้นกับฉันเมื่อไม่กี่วันที่ผ่านมา ... ไม่มีคำตอบที่สมเหตุสมผลอาจเป็นไปได้ว่ากระบวนการไม่เสร็จเพราะการเชื่อมต่อยังคงใช้อยู่ตลอดเวลา ฉันมี 2 HaProxy และสถานการณ์นี้ไม่เคยเกิดขึ้นในครั้งที่สองเนื่องจากไม่มีการเชื่อมต่อระหว่างการทำงานปกติ

ฉันออกคำสั่งSIGTERMหรือคุณสามารถฆ่าPIDเก่าได้และคุณก็สบายดี

คุณก็สามารถได้รับเก่าPIDจากหน้าสถานะ HAProxy การรีเฟรชหลายครั้งฉันเห็นกระบวนการเก่าและใหม่แบบสุ่ม

หลังจากที่ฆ่าคนเก่าแล้วกระบวนการใหม่นั้นเป็นสิ่งเดียวที่ตอบสนองต่อคำขอ

:)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.