IIS + MySQL + PHP = slow response

Walczyłem wczoraj z fajnym błędem, o tyle fajnym że nie spodziewałem się go. Zainstalowałem Windows Server 2012 + IIS + PHP 5.4.5 + MySQL 5.5, wszystko elegancko skonfigurowane, MySQL na 8GB Ramu skonfigurowany na 110% w my.ini śmiga jak marzenie. 150k INSERT’ów w 0,68 sec. SELECT działa płynnie, zwraca dane jak marzenie, wszystko wygląda ok … do czasu. Uruchamiam Agility.B2B i coś taka zamuła. Samo wczytanie się strony głównej 3.8 sec i w głowie alert – ‚coś jest nie hellouł!’. Szybkie wertowanie slow.loga MySQL’a i diagnoza – baza danych działa szybko, coś z IIS’em.

# Time: 131127 14:42:04
# User@Host: agility[agility] @  [192.168.0.50]
# Query_time: 0.000977  Lock_time: 0.000851 Rows_sent: 0  Rows_examined: 0
use agility3;
SET timestamp=1385559724;
SELECT reg_Id, reg_Imie, reg_Nazwisko, reg_Ulica, reg_Nr_Domu, reg_Nr_Lokalu, reg_KodPocztowy, reg_Miejscowosc, reg_Wojewodztwo, reg_Panstwo, reg_PESEL, reg_NIP, reg_Email, reg_Usr_Id, reg_Firma, reg_Kh_Id FROM acc_user_register;
# Time: 131127 14:42:33
# User@Host: agility[agility] @  [192.168.0.50]
# Query_time: 0.000245  Lock_time: 0.000054 Rows_sent: 41  Rows_examined: 41
SET timestamp=1385559753;
SELECT * FROM agility3.acc_syn_tabele
LIMIT 0, 1000;
# Time: 131127 14:42:51
# User@Host: agility[agility] @  [192.168.0.43]
# Query_time: 0.020804  Lock_time: 0.006285 Rows_sent: 1000  Rows_examined: 1000
use agility2;
SET timestamp=1385559771;
SELECT * FROM agility2.acc_kh_kontrahent
LIMIT 0, 1000;

 

Przeglądam php.ini, zend_optimizer działa, skonfigurowany, licencjonowanie wyłączone – to nie to. Wertowanie PDO MySQL’a – aktualne, działa. I człowiek zachodzi w głowę co jest … światełka w tunelu brak. Testy wydajnościowe samej strony napisanej w PHP – odpowiedź rzędu 0.83 ms., HTML 0.34 ms. Czyli PHP ma problem na poziomie komunikacji z bazą danych. Wertowanie internetów, książki o IIS’ie i ogólnie 2h w dupkę tylko po to żeby dowiedzieć się że translacja ‚localhost’ na ‚127.0.0.1’ zajmuje IIS’owi TAK WIELE CZASU!

Finalnie wpisałem w database.ini zamiasto localhost -> 127.0.0.1 i aplikacja chodzi jak rakieta. THX MS!

Czytaj więcej

Windows 8.1 i maszyna wirtualna

Starając się ostatnio znaleźć jak najlepszą metodę postawienia wirtualnej maszyny systemu CentOS 6.3 natknąłem się na kilka rozwiązań, mniej lub bardziej skutecznych.

Podstawowym rozwiązaniem który jako pierwszy przychodzi do głowy jest VirtualBox od Oracle. Jest to dobry pomysł, i z początku uważałem że słuszny. Napotkałem jednak kilka problemów. Pierwszym jest fakt że licencja umożliwia używanie VirtualBox’a tylko do celów testowych – niekomercyjnych. W użytku komercyjnym należy nabyć odpowiednie uprawnienia. Continue reading “Windows 8.1 i maszyna wirtualna” »

Czytaj więcej