FileCache a PHP unserialize bug

Pechy.cz
Bronze Partner | 21
+
0
-

Zdravíčko pánové.
Mám na Vás dotaz, zda jste se s tímto setkali či tento problém vyřešili.

Máme aplikaci, pod kterou běží několik portálů, API, CLI úlohy, atd.. Je toho docela dost.
A náhodně to jednou za čas (dejme tomu 1 z 5000) requestů prostě padne.
Po dlouhém bádání se nám podařilo díky render testům celé aplikace tuhle chybu pomocí XDebug trace dopátrat, že vzniká náhodně při unserialize, když se sestavuje aplikace z FileCache a někdy si PHPko chytne do paměti jinam a tak je zabito.
Pogooglil jsem, že unserialize při správné konstalaci hvězd prostě padá, bylo to už asi 5× opravováno v různých verzích PHPka, ale stejně očividně nikdy né finálně. Zkoušeli jsme různé verze PHP (7.0, 7.1), ale stává se to ve všech.

Nasadili jsme do produkce Redis cache, čímž jsme chybovost snížili např. z 20–50/denně na 2–5/denně.
Nicméně to stále není finální řešení.

Setkali jste se s tím někdo?
Když se to přidá k Database refetch failed! , tak je to již druhý problém, se kterým si nevíme rady :(

Jsme tedy ještě na Nette 2.3, ale brzy budeme přecházet na nejnovější.

Editoval Pechy.cz (8. 2. 2018 13:26)

Pechy.cz
Bronze Partner | 21
+
0
-

Nikdo ? :(

Felix
Nette Core | 1186
+
0
-

Provozujeme x aplikaci a tohle se nam nedeje. Je to dost konkretni problem, necekal bych, ze by hnedka nekdo odpovedel.

Pechy.cz
Bronze Partner | 21
+
0
-

Právě že nám běžně taky ne…
Na Nette máme pár desítek eshopů, pár desítek webů, všechny jsou v pohodě.
Tohle nám dělá největší projekt, který jsme zatím na Nette postavili.
Eshopy a weby jsou oproti tomu tak 10% velikosti.

podolinek
Člen | 7
+
0
-

Stává se nám přesně to samé. Jeden z x stovek requestů na jediné stránce. A to pouze na jednom projektu z cca. 15. Nette 2.4. A jelikož je to notice na produkci, tak ani nemáme nic bližšího než jeden řádek v error.logu.

ali
Člen | 342
+
0
-

@podolinek ? :-)

tracy:
	logSeverity: E_ALL
Pechy.cz
Bronze Partner | 21
+
0
-

ali napsal(a):

@podolinek ? :-)

tracy:
	logSeverity: E_ALL

Je zabito celý PHP, takže se to k Tracy ani nedostane.
Jak jsem psal. Podařilo se to odhalit až XDebugem díky trace. A asi 150. spuštěním, kdy se to konečně stalo 2× po sobě.

Pechy.cz
Bronze Partner | 21
+
0
-

Tak vyřešeno změnou řešení :D
Přechod na nginx s php-fpm tenhle error úplně odboural.

Pechy.cz
Bronze Partner | 21
+
0
-

Tak ještě upravuji. Dnes tedy na php-fpm padlo znovu, jen díky fpm už víme při čem.
Funkce serialize se z neznámého důvodu snaží naalokovat „trošičku“ víc, než by asi měla.
Viz. „Tried to allocate 9223372036860641280 bytes“

Editoval Pechy.cz (2. 10. 2018 11:53)