Score:0

มีบางอย่างปิดการเชื่อมต่อใน CentOS VM ของฉัน - วิธีแก้ไขปัญหาที่ดีที่สุด

ธง cn

ฉันมีการติดตั้ง 3 VMs (1 เซิร์ฟเวอร์แอปพลิเคชันบน CentOS6 และ 2 เซิร์ฟเวอร์ฐานข้อมูลบน CentOS7)ในช่วง 1-2 สัปดาห์ที่ผ่านมา เรามีปัญหาเกี่ยวกับการหมดเวลาเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล (และระหว่างเซิร์ฟเวอร์สองเครื่องที่อยู่ในคลัสเตอร์)

ผู้ให้บริการฐานข้อมูล (Couchbase) สามารถดูได้จากบันทึกว่าการเชื่อมต่อถูกบังคับปิด:

เตือน com.couchbase.endpoint - [com.couchbase.endpoint][UnexpectedEndpointDisconnectedEvent] ด้านระยะไกลตัดการเชื่อมต่อจุดสิ้นสุดโดยไม่คาดคิด

บันทึกยังแสดงว่าแพ็คเกจหลุด เช่น:

[คำเตือน] อินเทอร์เฟซ âens32â (removedip) ล้มเหลว: RX:2863 / TX:0 - รายละเอียด:
- แพ็กเก็ต RX:308,593,167 ข้อผิดพลาด:0
หลุด:2,863 โอเวอร์รัน:0 เฟรม:0

VMs ถูกโฮสต์บนโฮสต์เดียวกันซึ่งเป็น VMware ESXi (เวอร์ชัน 6.5) ดังนั้นพวกเขา ควร สามารถมีความสัมพันธ์ที่ดีต่อกันได้

และมีอะไรเปลี่ยนแปลงไปบ้างในช่วง 2-3 สัปดาห์ที่ผ่านมา? การอัปเดตความปลอดภัยบน VM OSes และเวอร์ชันเซิร์ฟเวอร์ฐานข้อมูล (จาก 6.6.0 เป็น 7.0.0) การอัพเกรดฐานข้อมูล ไม่ควร เปลี่ยนแปลงอะไรในเครือข่าย แต่ที่แน่ๆ คือเหตุผลที่ติดต่อผู้ให้บริการฐานข้อมูลก่อน...

ความคิดใด ๆ ในการค้นหาผู้กระทำผิดชื่นชมมาก :-)

แก้ไข:

ทำตามคำแนะนำของ Cameron ฉันเพิ่งเรียกใช้การติดตามเครือข่ายสั้น ๆ และโหลดลงใน Wireshark บนเครื่องท้องถิ่นของฉัน จากนั้นฉันเปิด "ข้อมูลผู้เชี่ยวชาญ" และได้รับสิ่งนี้: Wireshark - ข้อมูลผู้เชี่ยวชาญ ฉันต้องบอกว่ามีพร็อกซีเซิร์ฟเวอร์ Nginx อยู่หน้าแอปพลิเคชันเซิร์ฟเวอร์ จัดการ SSL และ "ยกออก" ก่อนที่จะกดแอป เซิร์ฟเวอร์ แค่ดูข้อมูล ฉันคาดว่าบล็อก "สีแดง" สองบล็อกจะเกี่ยวข้องกับคำขอที่มาจากภายนอก ไม่ใช่จากแอป เซิร์ฟเวอร์ไปยังเซิร์ฟเวอร์ฐานข้อมูล

แต่ฉันไม่แน่ใจจริง ๆ ว่าจะมองหาอะไรในผลลัพธ์? - และฉันเดาว่าฉันต้องปล่อยให้มันทำงานต่อไปอีกหน่อย - แต่บางทีอาจไม่มีข้อมูลจากภายนอก?

แก้ไข 2

ขณะที่นั่งดูปัญหาก็เกิดขึ้นจริง... - ดังนั้นฉันจึงเริ่ม tcpdump อีกครั้งอย่างรวดเร็ว ดังนั้นผลลัพธ์อาจไม่มีต้นตอ - แต่ควรมีความเกี่ยวข้องมากกว่าสาเหตุแรก: Wireshark - ข้อมูลผู้เชี่ยวชาญ (2) บล็อกที่ฉันขยายดูเหมือนจะเกี่ยวข้องกับการสื่อสารกับหนึ่งในเซิร์ฟเวอร์ฐานข้อมูล.... :-)

แต่ผลลัพธ์เหล่านี้หมายความว่าอย่างไร และฉันจะเข้าใกล้สาเหตุได้อย่างไร

Cameron Kerr avatar
id flag
หน้าต่าง TCP เต็มจะชี้ไปที่บางสิ่งที่หยุดทำงานด้วยเหตุผลบางประการ และไม่อ่านอินพุตที่มีอยู่ แพ็กเก็ต 'Couchbase' มีความกังวลเป็นพิเศษ หากคุณคลิกที่สิ่งเหล่านี้ คุณจะพบว่ามีการเลือกแพ็กเก็ตในหน้าต่างหลักของ Wireshark คลิกขวาและใช้ฟังก์ชัน Follow TCP Stream เพื่อดูว่ามีการพูดอะไรจริง ฉันสงสัยว่าคุณกำลังเผชิญกับความเข้ากันไม่ได้ของเวอร์ชันไคลเอ็นต์ หรือเซิร์ฟเวอร์มีความละเอียดอ่อนมากขึ้นต่อคำขอบางประเภท เช่น อักขระที่ไม่ถูกต้องในชื่อส่วนหัว
John Dalsgaard avatar
cn flag
ขอบคุณ @CameronKerr ฉันไม่สามารถบอกได้ว่ามีบางอย่างที่ไม่เป็นอย่างที่ควรจะเป็น... แต่ฉันได้ส่งการจับกุมครั้งล่าสุดไปให้วิศวกรที่ Couchbase แล้ว เราจะเห็นว่ามันมีความหมายกับเขาอย่างไร :-)
Score:0
ธง id

ยินดีต้อนรับสู่ความผิดพลาดของเซิร์ฟเวอร์

ตามอายุ CentOS 6 ไม่รองรับในขณะนี้ เป็นไปได้มากว่าคุณกำลังประสบกับความเข้ากันไม่ได้ของ SSL/TLS; สมมติว่าคุณกำลังเชื่อมต่อกับสิ่งนั้น เราเคยประสบกับเหตุการณ์เช่นนี้มากมายในช่วงเวลาที่เราใช้ RHEL6 เป็น SSL2 ฯลฯ ถูกปิดใช้งานตามค่าเริ่มต้น ในทำนองเดียวกันกับ Java เวอร์ชันพอยต์ต่างๆ

อีกสาเหตุหนึ่งที่เป็นไปได้ เนื่องจากคุณกำลังเรียกใช้ปริมาณงาน CentOS บน ESXi คือคุณอาจเรียกใช้เอนโทรปีแบบอาย ซึ่งทำให้เกิดพฤติกรรมการบล็อกซึ่งอาจนำไปสู่การหมดเวลาและปัญหาเกี่ยวกับคลัสเตอร์ ซึ่งนำไปสู่การยกเลิกการเชื่อมต่อ จนถึงที่ไหนสักแห่งใน Java 8 Java มีความอ่อนไหวต่อสิ่งนี้เป็นพิเศษ คุณสามารถตัดสินได้ว่านี่เป็นปัญหาสำหรับคุณหรือไม่โดยดูที่ /proc/sys/kernel/random/entropy_avail เมื่อเวลาผ่านไป ถ้ามันต่ำกว่า 128 หรือมากกว่านั้นและไม่เด้งกลับ แสดงว่าคุณมีความอดอยากเอนโทรปี ทั่วไปบน VM ที่ไม่มีกิจกรรมคีย์บอร์ด-เมาส์ คุณอาจลองใช้เอนโทรปีรวบรวมดีมอนหากเป็นกรณีนี้

BTW ฉันจะไม่สรุปจากบันทึกเหล่านั้นว่ามีบางอย่าง [อื่น] กำลังบังคับให้ปิดการเชื่อมต่อเหล่านั้น เป็นเพียงว่าการเชื่อมต่อปิดในเวลาที่ฝ่ายใดฝ่ายหนึ่งไม่คาดคิด อาจเป็นเพราะสิ่งต่าง ๆ เช่น การหมดเวลา ข้อยกเว้น ความผิดพลาดของกระบวนการ ฯลฯ เป็นต้น

คุณบอกว่าเซิร์ฟเวอร์ฐานข้อมูลได้รับการอัปเกรด... นั่นคือการอัปเกรดระบบปฏิบัติการจาก CentOS 6 หรือไม่ แอปพลิเคชันได้รับการอัปเกรดด้วยหรือถูกยกและเลื่อนหรือไม่

ไชโย คาเมรอน

John Dalsgaard avatar
cn flag
ขอบคุณที่ตอบกลับคาเมรอน! ฉันทำงานโดยไม่มี TLS ที่ "ภายใน" ซึ่งเซิร์ฟเวอร์ไม่สามารถเข้าถึงได้แบบสาธารณะ ซึ่งแทบจะไม่เป็นปัญหาเลยentropy_avail บนเซิร์ฟเวอร์ CentOS6 อยู่ระหว่าง 129 ถึง 177 ในช่วง 5-10 นาทีที่ผ่านมา ในกล่อง CentOS7 จะมีค่าประมาณ 3500 เฉพาะซอฟต์แวร์ DB เท่านั้นที่ได้รับการอัพเดต (yum) เมื่อฉันตรวจสอบครั้งล่าสุดดูเหมือนจะไม่มีตัวเลือก "อัปเกรด" สำหรับ CentOS 6 -> 7 ซึ่งบางส่วนอธิบายเพิ่มเติมว่าทำไม app.server จึงยังคงอยู่ใน 6 ;-)
John Dalsgaard avatar
cn flag
โดย _"บังคับให้ปิดการเชื่อมต่ออย่างแข็งขัน"_ ฉันหมายถึงบางสิ่งบางอย่าง "รอบๆ" แอปพลิเคชัน เซิร์ฟเวอร์ฐานข้อมูล (และ SDK) ไม่ได้คาดหวังให้ปิด ฉันยอมรับว่าสิ่งนี้น่าจะเกิดจากการหมดเวลาหรือทรัพยากรหมดที่ไหนสักแห่ง .... แค่ไม่แน่ใจว่าจะหาได้ที่ไหน!
Cameron Kerr avatar
id flag
ฉันกังวลว่า 'เอนโทรปี' ที่มีอยู่ของคุณ (มันเป็นชื่อเรียกที่ผิดจริงๆ) ค่อนข้างหดหู่ ฉันมักจะเรียกใช้เซิร์ฟเวอร์ของฉันในการตั้งค่าที่คล้ายกันดังต่อไปนี้: `echo 1024 > /proc/sys/kernel/random/read_wakeup_threshold` (ค่าเริ่มต้นคือ 64) ฉันทำสิ่งนี้มาหลายปีแล้วกับ RHEL5, 6, 7, 8 ในสภาพแวดล้อมการผลิต รวมถึงอุปกรณ์ของผู้จำหน่ายที่ทำงานบน VMware (มันดีเพราะมันสัมผัสน้อยมาก)
Cameron Kerr avatar
id flag
เวอร์ชันกระโดดในฝั่งฐานข้อมูลคืออะไร? ไลบรารีไคลเอนต์ฐานข้อมูลจำเป็นต้องตรงกันหรือไม่ (ฉันไม่คุ้นเคยกับ Couchbase) เนื่องจากคุณกำลังเรียกใช้ข้อความที่ชัดเจน ดูที่การจับทราฟฟิก (เช่น tcpdump -i eth0 -s0 -w /tmp/capture.pcap จากนั้นคัดลอกการจับภาพที่เสร็จสมบูรณ์ไปยังเครื่องที่มี wireshark คุณอาจพบเบาะแสที่เป็นประโยชน์โดยใช้ 'ข้อมูลผู้เชี่ยวชาญ' และ 'ติดตาม TCP Stream'
John Dalsgaard avatar
cn flag
ฐานข้อมูลได้รับการอัปเดตจากเวอร์ชัน 6.6.0 เป็น 7.0.0 SDK ที่ติดตั้งควรพูดคุยกับทั้งคู่อย่างมีความสุข ฉันยังได้อัปเกรด SDK เป็นเวอร์ชันล่าสุดเพื่อตัดปัญหานั้นออก การบันทึกจาก SDK แสดงว่ามีปัญหาในเลเยอร์เครือข่ายพื้นฐาน ฉันค้นหาข้อมูลเพิ่มเติมเกี่ยวกับ `read_wakeup_threshold` และ `entropy` และพบสิ่งนี้: https://redhatlinux.guru/2016/04/03/increase-system-entropy-on-rhel-centos-6-and-7/ - แนะนำว่า `entropy_avail` ควรอยู่ในช่วง 3-3.500 ดังนั้นบางทีฉันควรจะลองเพิ่มในแอพ เซิร์ฟเวอร์?
John Dalsgaard avatar
cn flag
อืมม... ไม่รู้อะไรเกี่ยวกับ `เอนโทรปี' ฉันอ่านบทความสองสามบทความ.... ดูเหมือนว่าจะเกี่ยวข้องกับการเข้ารหัส (SSL) และการสุ่ม.... สิ่งนี้ยังคงเป็นปัญหาในสถานการณ์ของฉันหรือไม่ ไม่ใช้ SSL? แต่ฉันเห็นว่า `entropy_avail` ในแอปของฉันต่ำกว่า 3,000 มากเซิร์ฟเวอร์ (128-190ish)
John Dalsgaard avatar
cn flag
โดยเฉพาะบทความนี้: https://www.2uo.de/myths-about-urandom/ - แม้ว่าฉันจะไม่ได้ตั้งใจเข้าใจทั้งหมดเพราะมันชี้ไปในทิศทางของ SSL....
John Dalsgaard avatar
cn flag
ฉันเพิ่ม `read_wakeup_threshold` ตามที่คุณอธิบายไว้ก่อนที่จะรายงานการหมดเวลาอีกครั้ง (เมื่อฉันใช้ tcpdump ครั้งที่สอง) ดังนั้นจึงไม่รายงาน `entropy_avail` ในช่วงประมาณ 2,500-2,600
John Dalsgaard avatar
cn flag
ฉันเพิ่งรู้จากคนที่โฮสต์ว่าพวกเขาโฮสต์เซิร์ฟเวอร์เหล่านี้บนเซิร์ฟเวอร์ ESXi 3 เครื่อง ดังนั้นเซิร์ฟเวอร์อาจทำงานบนโฮสต์ที่แตกต่างกันในบางจุด - ฉันได้ถามพวกเขาเพื่อดูว่าสามารถตรวจสอบได้หรือไม่ หลังจากการเปลี่ยนแปลง `entropy_avail` (หรือโดยบังเอิญ) ดูเหมือนว่าเซิร์ฟเวอร์จะทำงานได้ดีขึ้น ฉันยังไม่ได้รับการตอบกลับจากวิศวกร Couchbase
John Dalsgaard avatar
cn flag
หากยังคงทำงานได้อย่างราบรื่น ฉันพิจารณาการติดตามใหม่บนเซิร์ฟเวอร์แอปและเซิร์ฟเวอร์ db ทั้งสอง - เพื่อดูว่าปัญหาก่อนหน้านี้ยังคงอยู่หรือไม่

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา