Apache 2.4 trên Windows phản hồi chậm, bị treo khi phục vụ một số trang động


30

(Tôi biết câu trả lời cho câu hỏi này. Đăng bài này chỉ để chia sẻ câu trả lời với cộng đồng)

Ví dụ Apache 2.4 (Windows 7) cục bộ của tôi gặp phải sự chậm trễ hoặc treo máy khi phục vụ một số URL, tùy thuộc vào trình duyệt nào tôi sử dụng để truy cập các URL này .

Với Firefox / Chrome, Apache chậm phản hồi trên một số URL nhất định. Sự chậm chạp xảy ra khoảng 20% ​​thời gian trên bất kỳ URL nào. Khi điều đó xảy ra, sẽ có độ trễ 5 giây trong đó Firefox hiển thị trạng thái "Đang chờ ...".

Với Internet Explorer 9, Apache chỉ cần treo và dừng phục vụ mọi yêu cầu (với bất kỳ trình duyệt nào) cho đến khi được khởi động lại.

  • Điều này dường như chỉ xảy ra với các yêu cầu động (PHP), nhưng không phải tất cả chúng. Trong thực tế, nó chỉ xảy ra trên một trang web cụ thể. Các trang web dựa trên PHP khác trên cùng một máy hoạt động tốt.
  • Có thể có hoặc không có ý nghĩa rằng trang web có vấn đề bao gồm một số lượng lớn tên miền phụ (Virtualhosts).
  • Vô hiệu hóa Windows Firewall và Comodo Firewall không giúp ích.
  • Vấn đề dường như thường xuyên hơn với các trang "bận rộn hơn" (yêu cầu bổ sung cho IFRAMES, v.v.)

Tôi đã thử nhiều thay đổi httpd.conf(như vô hiệu hóa KeepAlive, EnableMMAP, HostnameLookups) nhưng dường như không có gì hoạt động.


1
Khi bạn đã có một số phiếu bầu, bạn sẽ có tiếng để chuyển câu trả lời thành câu trả lời thực sự, điều mà bạn nên làm sau đó. (Nếu không có gì khác, các upvote sẽ giúp bạn có thêm danh tiếng sau đó.)
pjmorse

1
Để tìm bài đăng này tại đây thông qua Google: Giải pháp bên dưới cũng hoạt động cho lỗi này: " (OS 64) Tên mạng được chỉ định không còn khả dụng .: AH00341: winnt_accept: Không đồng bộ AcceptEx không thành công. ". Trong tiếng Đức: " (OS 64) Der angegebene Netzwerkname ist nicht mehr verfügbar .: AH00341: winnt_accept: Không đồng bộ AcceptEx không thành công. ".
Uwe Keim

Câu trả lời:


35

Đã trả lời bởi Thomasz


Giải pháp là thêm các mục sau vào httpd.conf:

AcceptFilter http none
AcceptFilter https none

Trên Windows, điều này có tác dụng vô hiệu hóa API AcceptEx () (một phần của WinSock), cung cấp một số cải tiến về hiệu suất, nhưng có thể xung đột với Comodo Firewall.

Đặt Tường lửa Comodo ở chế độ "Đã tắt" không giúp ích vì các yêu cầu có thể vẫn đi qua mã mạng của Comodo. Tôi nghĩ Comodo sẽ phải được gỡ cài đặt hoàn toàn để loại bỏ vấn đề (mặc dù tôi chưa thử).

Nếu bạn gặp vấn đề tương tự với Apache 2.2, bạn nên sử dụng chỉ thị Win32DisableAcceptEx thay thế.

Tài liệu tham khảo

Trích dẫn từ http://httpd.apache.org/docs/2.4/mod/core.html :

Các giá trị mặc định trên Windows là:

AcceptFilter http data

AcceptFilter https data

Mpm_winnt của Window giải thích AcceptFilter để chuyển API AcceptEx () và không hỗ trợ bộ đệm giao thức http. Có hai giá trị sử dụng API Windows AcceptEx () và sẽ tái chế các ổ cắm mạng giữa các kết nối. dữ liệu chờ cho đến khi dữ liệu được truyền đi như tài liệu ở trên và bộ đệm dữ liệu ban đầu và địa chỉ điểm cuối mạng đều được truy xuất từ ​​lệnh gọi AcceptEx () duy nhất. kết nối sẽ sử dụng API AcceptEx (), cũng truy xuất các địa chỉ điểm cuối mạng, nhưng giống như không có tùy chọn kết nối nào không chờ truyền dữ liệu ban đầu.

Trên Windows, không sử dụng accept () thay vì AcceptEx () và sẽ không tái chế các socket giữa các kết nối. Điều này hữu ích cho các bộ điều hợp mạng có hỗ trợ trình điều khiển bị hỏng, cũng như một số nhà cung cấp mạng ảo như trình điều khiển vpn hoặc bộ lọc spam, vi rút hoặc phần mềm gián điệp.

Xem thêm: http://forums.comodo.com/help-for-comodo-antillin/conflict-with-apache-t260.0.html;msg31636#msg31636


1
Tôi đã gặp sự cố với IE10 khiến Apache2.4 (không liên quan đến comodo) bị treo cho đến khi dịch vụ được khởi động lại - và thay đổi .conf để bao gồm các lỗi này. Cảm ơn đã đăng bài này.
matt lohkamp

1
Cái này cũng có tác dụng với tôi. Tôi cũng đã thu thập thêm một số tài liệu tham khảo trên blog của mình vì thông tin về chủ đề này rất phân tán vào lúc này.
Stijn de Witt

3
Làm việc cho tôi, Win 7 x64. Tôi tự hỏi tại sao nonekhông phải là thiết lập mặc định trong Apache? Hầu hết các tính năng 'sáng tạo' khác bị tắt theo mặc định trong Apache: P
rustyx

-1

Tôi đang chạy Apache 2.4.16 trên hộp Windows 7 Pro và trang web của tôi mới ngừng hoạt động khoảng 2 tuần trước. Thêm điều này đã khắc phục vấn đề.

ServerRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.4"

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen XX.XX.XX.XX:80
Listen 80
AcceptFilter http none
AcceptFilter https none

Bỏ phiếu vì câu trả lời của bạn giống hệt như câu trả lời ở trên của @Eric Fossum.
hargobind
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.