Apache Proxy TimeOut

18

Saya mencoba memahami apa yang terjadi dengan pesan berikut di Apache 2.2 error_log kami:

Wed May 18 21:03:29 2011] [error] [client 172.20.10.10] (70007)The timeout specified has expired: proxy: error reading status line from remote server super-load1-ga.test.com, referer: https://tester2.test.com/boom/ga/inside.ashal

Kami menjalankan Apache 2.2 dengan mod_proxy. Apakah Apache ini membatalkan permintaan terkait dengan nilai TimeOut 5 menit di httpd.conf? (Artinya tidak menerima respons dari server jarak jauh dalam 5 menit). Atau apakah ini hanya tanggapan dari server jarak jauh yang mengatakan bahwa ia tidak dapat menangani koneksi?

Apache dengan cepat kehabisan MaxClients pada saat saya melihat kesalahan ini.

Contoh cepat entri Proksi:

ProxyPass /boom/ga https://super-load1-ga.test.com
ProxyPassReverse /boom/ga https://super-load1-ga.test.com
roacha
sumber

Jawaban:

28

Anda menambah batas waktu dalam arahan ProxyPass :

ProxyPass /boom/ga https://super-load1-ga.test.com connectiontimeout=300 timeout=300

Nilai waktu habis dalam hitungan detik .

uı6ʎɹnɯ ꞁəıuɐp
sumber
6
Jika Anda belum mendefinisikan argumen batas waktu ProxyPass, Timeoutnilai global Anda akan digunakan. Lihat httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxytimeout dan httpd.apache.org/docs/2.2/mod/core. html # timeout
sinkronkan
Saya juga mengalami kesalahan geeting Waktu tunggu yang ditentukan telah kedaluwarsa .... Saya menonaktifkan ProxyRequests, jadi apakah ini terkait? haruskah saya membuatnya untuk menambah waktu tunggu ......
Ashish Karpe
5

Sepertinya server Anda https://super-load1-ga.example.comterlalu lama merespons.

Dalam skenario itu, jika hanya duduk di sana maka proses Apache akan menunggu untuk itu. Proses itu pada dasarnya diblokir, yaitu tidak dapat melakukan hal lain. Jika Anda tidak cukup waktu, Anda akan kehabisan proses Apache dan menekan MaxClients yang tampaknya masuk akal.

Anda harus memiliki log di situs super-load1-ga.test.com untuk melihat berapa lama permintaan, mereka harus berusia.

Anda berpotensi memperpendek batas waktu pada koneksi ProxyPass

http://httpd.apache.org/docs/current/mod/mod_proxy.html#workers

Philip Reynolds
sumber
Terima kasih atas tanggapan luar biasa Phil. Jadi Anda pikir ini memukul nilai TimeOut httpd.conf utama 5 menit dan Apache sedang tidak ada sesi? Karena saya tidak memiliki batas waktu spesifik proxy, ini akan menjadi default. Pada saran batas waktu Proxy menurut Anda apakah saya harus menggunakan variabel ProxyTimeout atau perintah ProxySet? (ProxySet connectiontimeout = 5 timeout = 30)
roacha
2

Untuk menjawab pertanyaan Anda, ya, Apache2 httpd dalam mode proxy tidak mencatat pesan kesalahan itu ketika Apache2 httpd habis. Jika server terhubung ke Apache2 httpd dalam mode proxy adalah penyebabnya akan ada pesan yang berbeda.

Pesan memiliki beberapa bagian: The timeout specified has expiredadalah teks yang setara dengan APR_TIMEUPkode kesalahan, lihat:

srclib / apr / misc / unix / errorcodes.c

case APR_TIMEUP:
    return "The timeout specified has expired";

Lalu proxy: error reading status line from remote server super-load1-ga.test.comada di

modules / proxy / mod_proxy_http.c

Jika Anda menaikkan level log ke APLOG_DEBUG, Anda akan melihat pesan tambahan: proxy: read timeoutjuga.


sumber