Apache 2.4 pada Windows merespons dengan lambat, hang ketika melayani beberapa halaman dinamis

30

(Saya tahu jawaban untuk pertanyaan ini. Posting ini hanya untuk membagikan jawaban dengan komunitas)

Contoh lokal saya (Windows 7) dari Apache 2.4 mengalami keterlambatan atau hang-up ketika melayani beberapa URL, tergantung pada browser yang saya gunakan untuk mengakses URL ini .

Dengan Firefox / Chrome, Apache lambat merespons pada URL tertentu. Kelesuan terjadi sekitar 20% dari waktu pada URL yang diberikan. Ketika hal itu terjadi, ada penundaan 5 detik di mana Firefox menampilkan status "Menunggu ...".

Dengan Internet Explorer 9, Apache hanya hang dan berhenti melayani permintaan apa pun (dengan browser apa pun) hingga dimulai ulang.

  • Ini tampaknya terjadi hanya dengan permintaan dinamis (PHP), tetapi tidak semuanya. Bahkan, itu hanya terjadi pada satu situs tertentu. Situs berbasis PHP lain di mesin yang sama berfungsi dengan baik.
  • Mungkin atau mungkin tidak signifikan bahwa situs bermasalah terdiri dari sejumlah besar subdomain (VirtualHosts).
  • Menonaktifkan Windows Firewall dan Comodo Firewall tidak membantu.
  • Masalahnya tampaknya lebih sering terjadi pada halaman "sibuk" (permintaan tambahan untuk IFRAMES, dll.)

Saya telah mencoba banyak perubahan httpd.conf(seperti menonaktifkan KeepAlive, EnableMMAP, HostnameLookups) tetapi sepertinya tidak ada yang berhasil.

Tomasz P. Szynalski
sumber
1
Setelah Anda mendapatkan suara terbanyak, Anda akan memiliki reputasi untuk memindahkan jawaban menjadi jawaban nyata, yang harus Anda lakukan kemudian. (Jika tidak ada yang lain, upvotes akan membuat Anda mendapatkan lebih banyak reputasi.)
pjmorse
1
Untuk menemukan posting ini di sini melalui Google: Solusi di bawah ini juga berfungsi untuk kesalahan ini: " (OS 64) Nama jaringan yang ditentukan tidak lagi tersedia.: AH00341: winnt_accept: Asynchronous AcceptEx gagal. ". Dalam bahasa Jerman: " (OS 64) Der angegebene Netzwerkname ist nicht mehr verfügbar.: AH00341: winnt_accept: Asynchronous AcceptEx gagal. "
Uwe Keim

Jawaban:

35

Dijawab oleh Thomasz


Solusinya adalah dengan menambahkan yang berikut ke Anda httpd.conf:

AcceptFilter http none
AcceptFilter https none

Pada Windows, ini memiliki efek menonaktifkan API AcceptEx () (bagian dari WinSock), yang menawarkan beberapa peningkatan kinerja, tetapi mungkin konflik dengan Comodo Firewall.

Menempatkan Comodo Firewall dalam mode "Nonaktif" tidak membantu karena permintaan mungkin masih melalui kode jaringan Comodo. Saya pikir Comodo harus dihapus sepenuhnya untuk menghilangkan masalah (meskipun saya belum mencobanya).

Jika Anda memiliki masalah yang sama dengan Apache 2.2, Anda harus menggunakan arahan Win32DisableAcceptEx sebagai gantinya.

Referensi

Mengutip dari http://httpd.apache.org/docs/2.4/mod/core.html :

Nilai default pada Windows adalah:

AcceptFilter http data

AcceptFilter https data

Window's mpm_winnt menginterpretasikan AcceptFilter untuk mengaktifkan API AcceptEx (), dan tidak mendukung buffer protokol http. Ada dua nilai yang menggunakan Windows AcceptEx () API dan akan mendaur ulang soket jaringan di antara koneksi. data menunggu hingga data ditransmisikan seperti yang didokumentasikan di atas, dan penyangga data awal dan alamat titik akhir jaringan semua diambil dari permohonan AcceptEx () tunggal. connect akan menggunakan AcceptEx () API, juga mengambil alamat endpoint jaringan, tetapi tidak seperti opsi connect tidak menunggu transmisi data awal.

Di Windows, tidak ada yang menggunakan accept () daripada AcceptEx () dan tidak akan mendaur ulang soket di antara koneksi. Ini berguna untuk adapter jaringan dengan dukungan driver yang rusak, serta beberapa penyedia jaringan virtual seperti driver vpn, atau filter spam, virus atau spyware.

Lihat juga: http://forums.comodo.com/help-for-comodo-antivirus/conflict-with-apache-t260.0.html;msg31636#msg31636

Eric Fossum
sumber
1
Saya telah mengalami masalah dengan IE10 yang menyebabkan Apache2.4 (tidak ada comodo yang terlibat) untuk menggantung sampai layanan restart - dan mengubah .conf untuk memasukkan ini memperbaikinya. Terima kasih telah memposting ini.
matt lohkamp
1
Ini juga bekerja untuk saya. Saya juga mengumpulkan beberapa referensi lagi di blog saya karena info tentang topik ini sangat tersebar saat ini.
Stijn de Witt
3
Bekerja untuk saya, Menangkan 7 x64. Saya bertanya-tanya mengapa nonebukan pengaturan default di Apache? Sebagian besar fitur 'inovatif' lainnya dinonaktifkan secara default di Apache: P
rustyx
-1

Saya menjalankan Apache 2.4.16 pada kotak Windows 7 Pro, dan situs web saya baru saja berhenti berfungsi sekitar 2 minggu yang lalu. Menambahkan ini memperbaiki masalah.

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
memetik
sumber
Turut memberi suara karena jawaban Anda persis sama dengan jawaban di atas oleh @Eric Fossum.
hargobind