Patryk27
2017-06-14 21:46

Tworzę aplikację w Laravelu, która jako backend dla pamięci podręcznej wykorzystuje Redisa.

Wszystko ładnie, słupki wydajności lecą w górę (czy raczej w dół, zależy jak patrzeć), lecz nie mogę zejść poniżej 1s TTFB, nawet z włączonym opcache, co zaczęło mnie drażnić.

Po szybkiej zmianie pamięci podręcznej na pliki zacząłem otrzymywać czasy poniżej 100ms - czyli problem ze spowolnieniem znajdował się na linii Laravel-Redis.

Próbowałem instalowania innych wtyczek do obsługi Redisa, zmiany konfiguracji, lecz ostatecznie - po zdebugowaniu kodu frameworka - okazało się, że PHP zawiesza się na ok 1s podczas... tworzenia socketa do Redisa.

Rozwiązanie problemu, uwaga: zmiana hosta z localhost na 127.0.0.1 w konfiguracji...

#achtenwindows #php #laravel #redis #problemypierwszegoświata

TomRiddle

Też korzystam z laravel-redis i nie zauważyłem nigdy czegoś takiego :o Będę pamiętał żeby się przed tym ustrzec.

mr_jaro

@TomRiddle: bo domyślnie jest zawsze ustawione 127.0.0.1, więc jeśli stawiasz redisa na tej samej maszynie to nawet tego nie tykasz, a kolega postanowił się zabawić i padło :D Zapewne problem leży gdzieś w apachu/windowsie względem tłumaczenia nazwy na ip

Desu

Też się ostatnio na tym sparzyłem :p

mr_jaro

@Patryk27: tu może i tak ale w envach zawsze było 127 a ja nie usuwam danych z domyślnego enva tworząc swojego bo po coś jednak te dane tam są wpisane. Chyba, że zmienili to w 5.4 w którym jeszcze nic nie robiłem bo uznaliśmy w firmie że jednak nie warto robić migracji na 5.4 czekamy na 5.5 która będzie lts.

czysteskarpety

a bo z tym pehape to same problemy :P

Afish

Problem znany nie od dziś i pojawiający się w wielu innych sytuacjach. localhost jest tłumaczony DNS i może wskazywać zarówno IPv6, jak i IPv4, Redis pewnie czeka na jednym stosie, a PHP zaczyna od innego i dopiero po upływie czasu przerzuca się na ten poprawny.

Patryk27

@Afish: w sumie brzmi sensownie :-) To znaczy nie rozumiem decyzji przekierowywania localhost domyślnie na IPv6, podczas gdy prawdopodobnie każdy będzie oczekiwał IPv4, ale imho pasuje.

Afish

@vpiotr Śmieszny ten link, najlepszy fragment, że nie da się otworzyć systemowego pliku przez dwuklik na koncie zwykłego użytkownika :D

karolinaa

ale wiecie ze istnieje cos takiego jak Linux i Java?

vpiotr

@karolinaa: na Windows Java by działała tak samo. To nie ma nic wspólnego z językiem. Ja ten problem znalazłem przy okazji testowania JSON-RPC (C++) przy pomocy narzędzia w Pythonie.

EntityPamerano

@karolinaa: java (specjalnie z małej litery) jest słaba, spróbuj napisać coś w jakimkolwiek innym języku. I wtedy zrozumiesz.

vpiotr

@EntityPamerano, może napisz o tym więcej, bo ja znam kilka języków i nie rozumiem.

ShookTea

@EntityPamerano: java (specjalnie z małej litery) próbowałeś się popisać, ale to nazwa własna, a prawa ortografii języka polskiego mają to do siebie, że nie podlegają opinii :)

EntityPamerano

@ShookTea: nie zrozumiałeś mojego przekazu i to Ty teraz próbujesz się popisać.

ShookTea

@EntityPamerano zrozumiałem go w pełni, o mnie się nie obawiaj :)