Hiểu lỗi này: apr_socket_recv: Thiết lập lại kết nối theo ngang hàng (104)


14

Vì vậy, nếu tôi thực hiện một số điểm chuẩn với điểm chuẩn apache (ab) và tôi sử dụng số lượng lớn yêu cầu. Sau đó, đôi khi ở giữa một bài kiểm tra tôi nhận được lỗi này.

Tôi thậm chí không biết ý nghĩa của nó. Vì vậy, làm thế nào tôi có thể sửa chữa nó? Hoặc nó chỉ là một cái gì đó sẽ xảy ra nếu máy chủ nhận được quá nhiều lượt truy cập? Vấn đề là, nếu tôi chạy 10.000 lượt truy cập, tất cả sẽ chạy hoàn hảo. Nếu tôi chạy lại, nó sẽ lên tới 4000 và gặp lỗi:

apr_socket_recv: Connection reset by peer (104)

Một chút về thiết lập của tôi: Tôi có nginx nhận các yêu cầu tĩnh và xử lý các yêu cầu động để apache. Tệp trong câu hỏi được cung cấp từ bộ đệm bởi nginx, vì vậy tôi đoán có lẽ nó phải làm gì với cách nginx xử lý các yêu cầu?

Ý tưởng?

Câu trả lời:


7

Lỗi có nghĩa là đầu kia (máy chủ web) đột nhiên bị ngắt kết nối vào giữa phiên. hãy xem nhật ký lỗi apache hoặc nginx để xem có gì đáng nghi ở đó không.


4

Điều đó có nghĩa là máy chủ được tải nặng với yêu cầu tức là tất cả các luồng đang bận phục vụ yêu cầu. Giải pháp: tăng số lượng thuộc tính maxThread cho trình kết nối trong tệp server.xml hoặc tăng giá trị thuộc tính acceptCount.

acceptcount: Độ dài hàng đợi tối đa cho các yêu cầu kết nối đến khi tất cả các luồng xử lý yêu cầu có thể được sử dụng. Mọi yêu cầu nhận được khi hàng đợi đầy sẽ bị từ chối.


0

Tôi gặp vấn đề tương tự và phiên bản máy chủ của tôi là:

Server Version: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9 PHP/5.6.5 mod_perl/2.0.9dev Perl/v5.16.3

tôi đã loại bỏ các mô-đun không cần thiết và vấn đề đã biến mất:

Server Version: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips

Vì vậy, một trong những mod_fcgid , mod_php hoặc mod_perl đang gây ra sự cố. Bạn có thể cố gắng vô hiệu hóa những thứ đó nếu bạn không sử dụng.

(Lưu ý bên cạnh; Nếu bạn đang sử dụng opcache, hãy tắt fast_shutdown. Nó cũng gây ra vấn đề: opcache.fast_shutdown = 0)


0

Bên cạnh những câu trả lời ở đây, tôi đã đọc rất nhiều câu hỏi khác:

Không ai trong số họ giúp đỡ.

Tôi nghĩ về việc chuyển sang wrksau khi thấy những cuộc đấu tranh tương tự .

Tìm ra vấn đề

Vấn đề dường như có liên quan đến số lượng cổng ephermal . Tôi đã cố gắng đặt nó từ 50000 đến 25000 vì đây là phạm vi cổng. Vẫn không có may mắn. Sau đó, tôi đã có ấn tượng rằng nó có liên quan đến TIME_WAIT và bài đăng trên blog này . Tôi nghĩ rằng tôi có thể xác nhận rằng:

$ netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n

    1 CLOSE_WAIT
    1 established)
    1 Foreign
    4 LISTEN
    8 SYN_SENT
   62 SYN_RECV
  351 ESTABLISHED
13916 TIME_WAIT

Những gì tôi đã cố gắng

Tôi đã không sửa nó cho đến nay: - /

Theo sudo sysctl -a | grep net.ipv4.tcptôi có:

net.ipv4.tcp_tw_reuse = 0    # No luck setting only that to 1
net.ipv4.tcp_max_tw_buckets = 32768
net.ipv4.tcp_fin_timeout = 60  # Setting it to 5 didn't help either

-1

Vấn đề này là do hệ thống. nếu đưa ra một yêu cầu đồng thời cao cho hệ thống. Nhân hệ điều hành sẽ kích hoạt bảo vệ lũ SYN. Vì vậy, hệ thống sẽ thiết lập lại liên kết. bạn có thể sửa đổi cấu hình hệ điều hành trong tệp.

#vi /etc/sysctl.conf
net.ipv4.tcp_syncookies = 0 # set value is 0
#sysctl -p # read config from the config file.

bạn có thể thử nó

thông thường thuộc tính net.ipv4.tcp_syncookiesđược sử dụng để bảo vệ HĐH để tránh cuộc tấn công yêu cầu lớn. Nhưng nếu bạn muốn sử dụng HĐH này để thực hiện một số bài kiểm tra Tải hoặc kiểm tra hiệu năng, bạn nên đóng tính năng này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.