logo
26.11.2018 11:09
1
Máme vlastný virtuálny server, na ktorom prevádzkujeme eshop.

Niektorým zákazníkom sa občas stáva, že keď prejdú na rýchlu objednávku, tak namiesto formulára pre zadanie údajov sa im zobrazí stránka 500 Internal server error.

V logoch sa objavuje táto hláška:

(70007)The timeout specified has expired: [client xx.xx.xx.xx:xx] mod_fcgid: can't get data from http client
Problém bude ASI tu...

/etc/apache2/sites-available/domain.tld.vhost

Kód:
		<IfModule mod_fcgid.c>
				FcgidIdleTimeout 300
				FcgidProcessLifeTime 3600
				# FcgidMaxProcesses 1000
				FcgidMaxRequestsPerProcess 5000
				FcgidMinProcessesPerClass 0
				FcgidMaxProcessesPerClass 10
				FcgidConnectTimeout 3
				FcgidIOTimeout 600
				FcgidBusyTimeout 3600
				FcgidMaxRequestLen 1073741824
		</IfModule>
Mohol by mi niekto znalý serverov poradiť, či už z vlastnej skúsenosti alebo z vyššie uvedených nastavení či je to v poriadku? Ďakujem.

Čo sa týka PHP, tak max_execution_time je nastavený na 30000 a max_input_time na 600.

Co se právě děje na Webtrhu?

26.11.2018 11:43
2
Hodnoty těch timeoutů jsou podle manuálu v sekundách a všechny vypadají v pořádku
mod_fcgid - Apache HTTP Server Version 2.5

Hledání chybové hlášky na internetu dává hodně diskusí, ale všechny jsou o problému s nahráváním velkých příloh, které trvá moc dlouho.

Co přesně se děje na té stránce, kde se chyba vyskytuje? Na jiných stránkách se chyba nevyskytuje?
26.11.2018 12:16
3
tahle chyba řiká, že buď php nestačilo v čase odpovědět (přidejte si logy do php a trasování, která funkce trvala jak dlouho, to se dá snadno debugovat), nebo klient nestihl poslat všechna data jak píše Martin nade mnou.

Tahle chyba přímo závisí na FcgidIOTimeout, kterou máte na 10 min. Chyba se klientů zobrazí opravdu až po 10 minutách? Tahle hláška se může objevovat pokud třeba zákazník je na mobilním připojení, vjede to metra, server čeká na data a pak do logu vyhodí tuhle hlášku. Máte potvrzeno, že tahle chyba souvisí s tou 500 Internal error, která se klientům zobrazuje?

Máte tam nastavení FcgidConnectTimeout, provozujete to na Windowsu?

500 Internal error může mít spoustu důvodů, primárně hledejte v php aplikaci a používejte aplikační logy, klidně vlastní do samostatného souboru pokud na hostingu jsou špatně dostupné, hodně to pomůže zjistit, kde je chyba. Jakákoliv neošetřená situace v php právě končí stránkou 500 Internal error. Dále 500 Internal error dostaneš pokud překročíš max upload size (FcgidMaxRequestLen) 1MB, nepředpokládám, že tolik dat posíláte v rámci formuláře.
26.11.2018 12:39
4
Původně odeslal Martin Schlemmer
Co přesně se děje na té stránce, kde se chyba vyskytuje? Na jiných stránkách se chyba nevyskytuje?
Vyskytuje sa to iba na stránke rýchlej objednávky, podľa logov iba na nej a v oboch prípadoch sa mi ozvali zákazníci, že im vyhodilo chybovú hlášku 500.
Eshop prevádzkujeme vyše mesiaca a problém sa začal vyskytovať v piatok. Zatiaľ len dvom ľuďom.

Původně odeslal TomášX
Tahle chyba přímo závisí na FcgidIOTimeout, kterou máte na 10 min. Chyba se klientů zobrazí opravdu až po 10 minutách?
Podľa toho ako mi reportovali chybu, tak hneď. Klikli na "Pozrieť košík" a chyba 500 vyskočila.

Tahle hláška se může objevovat pokud třeba zákazník je na mobilním připojení, vjede to metra, server čeká na data a pak do logu vyhodí tuhle hlášku. Máte potvrzeno, že tahle chyba souvisí s tou 500 Internal error, která se klientům zobrazuje?
Toto mi tiež napadlo, ako keby problém bol s ich pomalým pripojením, resp. problém bol na ceste medzi nimi a našim serverom. Ale info aký internet (pomalý) majú, nemám ani od jedného.

Máte tam nastavení FcgidConnectTimeout, provozujete to na Windowsu?
Beží to na Debiane.

Dále 500 Internal error dostaneš pokud překročíš max upload size (FcgidMaxRequestLen) 1MB, nepředpokládám, že tolik dat posíláte v rámci formuláře.
Nemyslím si, že by to bolo cez 1MB, ale skúsim pracovať aj s touto možnosťou, že možno problém bude v tom. Inak fakt neviem.
26.11.2018 13:26
5
Manuál říká u nastavení FcgidConnectTimeout Directive:
This is the maximum period of time the module will wait while trying to connect to a FastCGI application on Windows. (This directive is not respected on Unix, where AF_UNIX defaults will apply.)
Tak možná se podívat i na toto?
26.11.2018 14:39
6
Očividně se tedy jedná o nesouvisející chybu v logu a problém bude jinde. Pokud se jim chyba objevila hned, timeout to nezpůsobil, hledejte spíše problém v samotné aplikaci, fatal chyby z aplikace nebudou logované na webovém serveru, tam budou jen chyby typu timout, kterou jste poslal. Přidejte si logy do aplikace, či se podívejte kam je ukládá. Zkuste si problém nasimulovat na svých počítačích a postupně prozkoumat.

FcgidConnectTimeout nemá žádný vliv na debianu, nepředpokládám, že by si někdo překompilovat Apache a použíl AF_NET nebo AF_LOCAL pro apache, je to nestabilní bez dalších úprav kernelu.