Điểm:0

Something is closing connections in my CentOS VMs - how to best troubleshoot?

lá cờ cn

I have a setup with 3 VMs (1 application server on CentOS6 and 2 database servers on CentOS7). The last 1-2 weeks we have had issues with timeouts when connecting to the database servers (and between the two servers that are in a cluster).

The database provider (Couchbase) can see from logs that the connections are forced closed:

WARN com.couchbase.endpoint - [com.couchbase.endpoint][UnexpectedEndpointDisconnectedEvent] The remote side disconnected the endpoint unexpectedly

The logs also show that packages are dropped, like:

[warn] Interface ‘ens32’ (removedip) failures: RX:2863 / TX:0 - Details:
- RX packets:308,593,167 errors:0
dropped:2,863 overruns:0 frame:0

The VMs are hosted on the same host which is a VMware ESXi (version 6.5). So they should be able to have good connections to each other.

And what has changed over the last couple of weeks? Security updates on the VM OSes and the database server version (from 6.6.0 to 7.0.0). The database upgrade shouldn't change anything in the network but obviously is the reason why I first contacted the database provider...

Any ideas to find the culprit much appreciated :-)

Edit:

Following Camerons suggestion I just ran a short network trace and loaded it into Wireshark on my local machine. Then I opened the "Expert information" and got this: Wireshark - Expert information I need to say that there is an Nginx proxy server in front of the application server. It handles SSL and "lifts it off" before hitting the app. server. Just looking at the info I would expect the two "red" blocks to be related to requests coming from the outside - and not from the app. server to the database servers.

But I'm not really sure what to look for in the results? - and I guess I need to let it run a little longer - but perhaps without the information from the outside?

Edit 2

While sitting and looking at it the issue actually arose... - so I quickly started the tcpdump again. So the results may not contain the root cause - but should be more relevant than the first: Wireshark - Expert info (2) The blocks I have expanded seem to be related to communication with one of the database servers.... :-)

But what do these results mean and how do I get closer to finding the cause?

Cameron Kerr avatar
lá cờ id
Cửa sổ TCP đầy sẽ chỉ ra một số lý do bị treo và không đọc được đầu vào có sẵn của nó. Các gói 'Couchbase' được đặc biệt quan tâm; nếu bạn nhấp vào chúng, bạn sẽ thấy rằng một gói được chọn trong cửa sổ chính của Wireshark. Nhấp chuột phải và sử dụng chức năng Follow TCP Stream để xem những gì đang thực sự được nói. Tôi nghi ngờ bạn đang xử lý sự không tương thích của phiên bản máy khách hoặc máy chủ hiện nhạy cảm hơn với một số loại yêu cầu, chẳng hạn như các ký tự không hợp lệ trong tên tiêu đề.
John Dalsgaard avatar
lá cờ cn
Cảm ơn @CameronKerr. Từ đó tôi không thể biết liệu có gì đó không ổn... nhưng tôi đã gửi bản chụp cuối cùng cho một kỹ sư tại Couchbase. Chúng ta sẽ xem nó có ý nghĩa gì với anh ấy :-)
Điểm:0
lá cờ id

Chào mừng bạn đến với Lỗi máy chủ.

Cho tuổi; CentOS 6 hiện không còn hỗ trợ, rất có thể bạn đang gặp phải sự không tương thích SSL/TLS; tất nhiên là giả sử rằng bạn đang kết nối qua đó. Chúng tôi chắc chắn đã trải qua nhiều sự kiện như vậy trong thời gian sử dụng RHEL6 vì SSL2, v.v. đã bị tắt dần theo mặc định. Tương tự như vậy với các phiên bản điểm khác nhau của Java (một số bản phát hành điểm trong sê-ri 1.7 đặc biệt khó hiểu)

Một lý do có thể khác, khi bạn đang chạy khối lượng công việc CentOS trên ESXi, là bạn có thể đang chạy entropy, điều này gây ra hành vi chặn có thể dẫn đến thời gian chờ và sự cố cụm, dẫn đến hủy kết nối. Cho đến một nơi nào đó trong Java 8, Java đặc biệt nhạy cảm với điều này. Bạn có thể đánh giá xem đây có phải là vấn đề của mình hay không bằng cách xem /proc/sys/kernel/random/entropy_avail theo thời gian; nếu nó xuống dưới 128 hoặc hơn và không quay trở lại, thì bạn đã chết đói entropy. Phổ biến trên máy ảo không có hoạt động bàn phím-chuột; bạn có thể thử chạy trình nền thu thập entropy nếu trường hợp này xảy ra.

Nhân tiện, tôi sẽ không kết luận từ các nhật ký đó rằng có thứ gì đó [khác] đang tích cực buộc đóng các kết nối đó; chỉ là kết nối bị đóng vào thời điểm mà một bên không mong đợi. Điều này có thể là do những thứ như thời gian chờ, ngoại lệ, sự cố quy trình, v.v.

Bạn nói rằng máy chủ cơ sở dữ liệu đã được nâng cấp... đó có phải là bản nâng cấp hệ điều hành từ CentOS 6 không? Ứng dụng cũng được nâng cấp hay nó đã được dỡ bỏ và thay đổi?

Chúc mừng, Cameron

John Dalsgaard avatar
lá cờ cn
Cảm ơn vì đã trả lời Cameron! Tôi đang chạy mà không có TLS ở "bên trong" nơi các máy chủ không thể truy cập công khai nên đó không phải là vấn đề.entropy_avail trên máy chủ CentOS6 nằm trong khoảng từ 129 đến 177 trong 5-10 phút qua. Trên hộp CentOS7, nó xấp xỉ. 3500. Chỉ có phần mềm DB được cập nhật (yum). Khi tôi kiểm tra lần cuối, dường như không có tùy chọn "nâng cấp" cho CentOS 6 -> 7, điều này đối với một số phần mở rộng giải thích tại sao app.server vẫn ở trên 6 ;-)
John Dalsgaard avatar
lá cờ cn
Bằng cách _"chủ động buộc đóng các kết nối"_ ý tôi chính xác là một cái gì đó "xung quanh" ứng dụng. Máy chủ cơ sở dữ liệu (và SDK) không muốn nó đóng. Tôi đồng ý rằng điều này rất có thể là do hết thời gian chờ hoặc hết tài nguyên ở đâu đó.... Chỉ là không biết tìm nó ở đâu!
Cameron Kerr avatar
lá cờ id
Tôi sẽ lo ngại rằng 'entropy' có sẵn của bạn (thực sự là một cách gọi sai) khá chán nản. Tôi thường chạy các máy chủ của mình trong một cài đặt tương tự như sau: `echo 1024 > /proc/sys/kernel/random/read_wakeup_threshold` (mặc định là 64). Tôi đã làm điều này nhiều năm trên RHEL5, 6, 7, 8 trong môi trường sản xuất, bao gồm cả các thiết bị của nhà cung cấp chạy trên VMware (rất tuyệt vì nó rất ít chạm)
Cameron Kerr avatar
lá cờ id
Phiên bản nhảy ở phía cơ sở dữ liệu là gì? Thư viện máy khách cơ sở dữ liệu có cần khớp không? (Tôi không quen thuộc với Couchbase). Vì bạn đang chạy văn bản rõ ràng, hãy xem bản ghi lưu lượng truy cập (ví dụ: tcpdump -i eth0 -s0 -w /tmp/capture.pcap, sau đó sao chép bản ghi đã hoàn thành vào máy bằng Wireshark, bạn có thể tìm thấy manh mối hữu ích bằng cách sử dụng Các chức năng 'Thông tin chuyên gia' và 'Theo dõi luồng TCP'.
John Dalsgaard avatar
lá cờ cn
Cơ sở dữ liệu đã được cập nhật từ phiên bản 6.6.0 lên 7.0.0. SDK đã được cài đặt sẽ vui vẻ nói chuyện với cả hai. Tôi cũng đã nâng cấp SDK lên phiên bản mới nhất để loại trừ vấn đề đó. Việc ghi nhật ký từ SDK cho thấy rất có thể có sự cố trong lớp mạng bên dưới. Tôi đã tìm kiếm thêm thông tin về `read_wakeup_threshold` và `entropy` và tìm thấy thông tin này: https://redhatlinux.guru/2016/04/03/increase-system-entropy-on-rhel-centos-6-and-7/ - nó gợi ý rằng `entropy_avail` phải nằm trong khoảng 3-3.500. Vì vậy, có lẽ tôi nên thử tăng nó trên ứng dụng. người phục vụ?
John Dalsgaard avatar
lá cờ cn
Hmmm... không biết gì về `entropy`. Tôi đã đọc một vài bài báo.... có vẻ như nó liên quan đến mật mã (SSL) và ngẫu nhiên hóa.... Đây có thể vẫn là vấn đề trong trường hợp của tôi không' không sử dụng SSL? Nhưng tôi thấy rằng `entropy_avail` thấp hơn nhiều so với 3000 trên ứng dụng của tôi.máy chủ (128-190ish)
John Dalsgaard avatar
lá cờ cn
Đặc biệt là bài viết này: https://www.2uo.de/myths-about-urandom/ - mặc dù tôi không có ý định hiểu tất cả về nó vì nó hướng tới SSL....
John Dalsgaard avatar
lá cờ cn
Tôi đã tăng `read_wakeup_threshold` theo cách bạn mô tả ngay trước khi nó báo hết thời gian chờ một lần nữa (khi tôi lấy tcpdump thứ hai). Vì vậy, không phải `entropy_avail` báo cáo trong khoảng 2500-2600
John Dalsgaard avatar
lá cờ cn
Tôi mới biết được từ những người lưu trữ rằng họ lưu trữ các máy chủ này trên 3 máy chủ ESXi. Vì vậy, các máy chủ có thể đã chạy trên các máy chủ khác nhau tại một thời điểm nào đó - tôi đã yêu cầu họ xem liệu họ có thể xác minh điều đó hay không. Sau những thay đổi đối với `entropy_avail` (hoặc do trùng hợp), các máy chủ dường như đã hoạt động tốt hơn. Tôi chưa nhận được phản hồi từ kỹ sư Couchbase.
John Dalsgaard avatar
lá cờ cn
Nếu chúng tiếp tục chạy trơn tru thì tôi xem xét thực hiện theo dõi mới trên máy chủ ứng dụng và hai máy chủ db - chỉ để xem liệu các sự cố trước đó có còn tồn tại hay không.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.