![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 1 Dołączył: 3.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam dość spory problem z wydajnością serwera. Problem, z którym nie mogę sobie poradzić bo nie potrafie znależć jego źródła. Proszę o pomoc. Udziele wszelkich potrzebnych danych Strona jest postawiona na następującym systemie - Windows Server 2003, Apache 2.2, PHP 5.3 i MySQL 5.5. Na serwerze działa jednocześnie MSSQL server i IIS6, które obsługują drugą, działającą na innym adresie IP, stronę. Każda podstrona generuje pomiędzy 70-100 zapytań i w większości są to obrazki choć jest też sporo plików js (około 7-10) i css (tez okolo 7-10). Na każdą podstronę przypada też około 100 z reguły prostych zapytań SELECT do bazy danych. Sesja przechowuje każdorazowo około 15 zmiennych. Po analizie access.log wychodzi, że normą jest około 1000 hits w ciągu kilkudziesięciu minut. Strona z reguły ładuje się wolno. Koło 3-4 sekund zanim zostanie wyświetlona odpowiedź z serwera (pojawi się tytuł strony w zakładce). Ale nie zawsze... Bo przykładowo po 5 kliknięciach, następne dwa odświeżenia potrafią nastąpić w ułamku sekundy. Podobnie jest z odczytem przez ajax mimo, ze wczytywana logika jest i krótsza i przede wszystkim ma zaledwie kilka prostych zapytań SELECT do bazy w porównaniu do załadowania całej strony. Gdy strona zaczyna działać wolno, apache zużywa około 200mb pamięci, mysql około 80mb (co zostawia około 1,5gb wolnej pamięci). Zużycie procesora jest niewielkie dla tych procesów (za to około 25% ciągnie proces cidaemon). Analiza zapisów xdebuggera jest niejasna albo nie potrafie jej zinterpretować - kilka testów pokazało śmiesznie krótki czas ładowania w zasadzie wszystkiego, prócz sessions_start. Wygooglowałem, że dyski NTFS miewają problemy z częstym używaniem sesji zapisywanych w plikach i zacząłem poszukiwania w tym kierunku do póki nie okazało się, że całkowite wyrzucenie sesji z kodu niczego nie przyspiesza Nie wiem co robić i gdzie szukać. Konfigurowałem pliki apache (mpm i default), obecnie mam threads per process ustawione na 1000, keepAlive on i keepAliveTimeout na 2. Manewrowanie tgymi ustawieniami nie powoduje jednak znaczącej różnicy. MySQL przyjmuje obecnie do 500 połączeń (maxconnections). Mam również zainstalowany xcache, zaindeksowane odpowiednie pola w bazie i włączone query buffering Zdaję sobie sprawę, że nie wkleiłem żadnych konkretnych konfiguracji i być może podałem za mało informacji. Z przyjemnością podam co trzeba jeśli znajdzie się ktoś chętny pomóc. Mam małe doświadczenie z Windows Server i nie wiem za bardzo, w którym teraz iść kierunku Dzięki Ten post edytował soska66 16.11.2011, 15:16:21 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
Zastanawiałeś się nad innymi serwerami-jeśli posiadasz 2 różne serwery to ja na twoim miejscu użył bym jednego.
Zastanowiłbym się nad Nginxem i postawić na tym wszystko-php na fastcgi i iisa jako proxy serwer-myślę ,że jest to jak najbardziej możliwe do zrealizowania.Dodatkowo patrząc na opinię innych i przeprowadzane przez nich testy nginx jest szybszym serwerem niż Apache i IIS i mniej zasobożernym. Nie wiem ,może ktoś zna lepszy serwer,ja bym postawił na ten serwer. Odnośnie tych dwóch serwerów,cashowanie plików image ,jak i css, fakt ,że kosztem pamięci,ale także powinno przyspieszyć wczytywanie się strony. Ten post edytował Niktoś 16.11.2011, 15:40:44 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 1 Dołączył: 3.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zastanawiałeś się nad innymi serwerami-jeśli posiadasz 2 różne serwery to ja na twoim miejscu użył bym jednego. Zastanowiłbym się nad Nginxem i postawić na tym wszystko-php na fastcgi i iisa jako proxy serwer-myślę ,że jest to jak najbardziej możliwe do zrealizowania.Dodatkowo patrząc na opinię innych i przeprowadzane przez nich testy nginx jest szybszym serwerem niż Apache i IIS i mniej zasobożernym. Nie wiem ,może ktoś zna lepszy serwer,ja bym postawił na ten serwer. Wszystko pięknie brzmi tylko, że w tej sytuacji to nie jest nasz serwer. Serwer należy do klienta, a ta druga strona postawiona na IIS (asp .net) nie jest moim dziełem. Dodatkowo system korzysta z importera, który może działać tylko na Windzie. Także tego typu zmiana odpada Poza tym, kłopotliwość tej sytuacji polega na tym, że musiałbym udowodnić, że to serwer jest przyczyną problemów z wydajnością aby nawet myśleć o jakichkolwiek sugestiach dotyczących migracji. A ja dowieść tego nie mogę bo na tą chwilę po prostu nie wiem skąd te problemy (właśnie dlatego tu piszę). Dodatkowo, sama maszyna nie jest taka kiepska - dedykowan pudło z duo core i z 4gb ramu Ten post edytował soska66 16.11.2011, 15:42:54 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 19:54 |