Należy znaleźć przyczynę okresowych zawieszeń serwera Linux/PHP sklepu internetowego
Potrzebny doświadczony administrator systemu Linux / DevOps do diagnozowania przyczyn okresowych zawieszeń sklepu internetowego.
Trzeba nie tymczasowo usunąć objawy, a znaleźć pierwotną przyczynę problemu, wyjaśnić ją i zaproponować optymalne rozwiązanie.
Co wiadomo
Sklep internetowy działa od ponad 15 lat.
Serwer Linux.
PHP 5.6.
MySQL.
OPcache włączony.
Jest dostęp SSH.
Jest dostęp do panelu hostingu.
Jest dostęp do logów.
Dodano wykresy obciążenia serwera.
Objawy
Okresowo:
strona przestaje się otwierać;
występują błędy:
503 Service Unavailable;
HTTP 508;
Client.Timeout exceeded while awaiting headers;
czas odpowiedzi strony czasami wzrasta do 8–11 sekund.
Na wykresach obciążenia obserwuje się nagłe szczyty CPU, pamięci RAM i Entry Processes.
W dostępnych logach PHP nie wykryto krytycznych błędów.
Potrzebne
przeprowadzenie pełnej diagnozy;
znalezienie pierwotnej przyczyny problemu;
określenie wąskiego gardła;
wyjaśnienie przyczyny występowania zawieszeń;
zaproponowanie optymalnego sposobu usunięcia;
po uzgodnieniu wykonanie niezbędnych prac.
Obowiązkowe doświadczenie
Linux;
SSH;
Apache / Nginx / OpenLiteSpeed;
PHP;
MySQL;
optymalizacja wydajności serwerów;
szukanie przyczyn okresowych zawieszeń i wysokiego obciążenia.
Przed rozpoczęciem pracy proszę odpowiedzieć
Ile lat pracujesz z serwerami Linux?
Czy miałeś doświadczenie w szukaniu podobnych problemów?
Jakie narzędzia planujesz użyć do diagnozy?
Czy pracowałeś ze starymi projektami PHP (PHP 5.x)?
Jaka jest cena wstępnej diagnozy?
Jaka jest twoja stawka godzinowa na dalsze prace (jeśli zajdzie taka potrzeba)?
Kiedy możesz rozpocząć?
Proszę, nie wysyłaj szablonowych ofert. W odpowiedzi krótko opisz, co dokładnie będziesz sprawdzać w pierwszej kolejności.
Jeśli problem zostanie pomyślnie znaleziony i usunięty, jestem gotów na długoterminową współpracę w zakresie administracji i rozwoju serwera.
Ważne wyjaśnienie
Istnieje podejrzenie, że problem może być związany nie tylko z serwerem, ale także z generowaniem dużego cennika XLS w panelu administracyjnym strony.
Na stronie jest sekcja:
/admin/xlsx
Przez nią ręcznie formułowany i eksportowany jest pełny cennik towarów w Excelu (XLS).
Po znacznym zwiększeniu liczby towarów na stronie oraz częstym generowaniu pełnego cennika zaczęły okresowo występować:
zawieszenia strony;
szczyty CPU;
szczyty RAM;
szczyty procesów wejściowych;
błędy 503;
HTTP 508;
timeouty.
Trzeba sprawdzić, czy to jest związane z procesem generowania cennika XLS.
Obecnie wygenerowany cennik XLS zawiera około 10 500 pozycji towarowych.
Potrzebne:
sprawdzić, czy to właśnie generowanie cennika XLS powoduje szczytowe obciążenie;
znaleźć, co dokładnie przeciąża serwer: kod PHP, zapytania MySQL, pamięć, operacje dyskowe, limity hostingu współdzielonego czy inne komponenty;
przeanalizować skrypt PHP generujący cennik;
sprawdzić zapytania SQL, które są wykonywane podczas generowania;
określić konkretne wąskie miejsce;
wyjaśnić, dlaczego występuje przeciążenie;
zaproponować konkretny plan optymalizacji z wyjaśnieniem oczekiwanego efektu;
w razie potrzeby wykonać optymalizację samego skryptu.
Możliwe kierunki optymalizacji (jeśli to będzie uzasadnione):
nie formułować całego pliku XLS w pamięci;
generować plik strumieniowo lub częściami;
cache'ować gotowy cennik;
uruchamiać generację w tle przez cron;
ograniczyć jednoczesne uruchomienia generacji;
optymalizować zapytania SQL;
sprawdzić lub dodać niezbędne indeksy MySQL;
w razie potrzeby podzielić duży cennik na kilka plików;
jeśli to będzie technicznie uzasadnione — zaproponować inny format eksportu (CSV/XML zamiast XLS).
Ważne
Trzeba znaleźć dokładną przyczynę, a nie tylko zwiększyć limity hostingu lub wyłączyć część funkcjonalności.
Jeśli problem leży w kodzie PHP lub zapytaniach SQL generujących cennik — trzeba pokazać konkretne miejsce, wyjaśnić, dlaczego ono powoduje obciążenie, i zaproponować optymalny sposób naprawy.
Po diagnozie potrzebny jest nie tylko wniosek, ale także gotowość, w razie potrzeby, do wykonania optymalizacji kodu PHP, zapytań SQL lub algorytmu generowania cennika.
Важливе уточнення
Є підозра, що проблема може бути пов'язана не лише із сервером, а й із генерацією великого XLS-прайсу в адмінці сайту.
На сайті є розділ:
/admin/xlsx
Через нього вручну формується та вивантажується повний прайс товарів у Excel (XLS).
Після значного збільшення кількості товарів на сайті та частого формування повного прайсу почали періодично виникати:
зависання сайту;
піки CPU;
піки RAM;
піки Entry Processes;
помилки 503;
HTTP 508;
таймаути.
Потрібно перевірити, чи пов'язано це саме з процесом генерації XLS-прайсу.
Зараз сформований XLS-прайс містить близько 10 500 товарних рядків.
Потрібно:
перевірити, чи саме генерація XLS-прайсу створює пікове навантаження;
знайти, що саме перевантажує сервер: PHP-код, MySQL-запити, пам'ять, дискові операції, ліміти shared-хостингу чи інші компоненти;
проаналізувати PHP-скрипт генерації прайсу;
перевірити SQL-запити, які виконуються під час генерації;
визначити конкретне вузьке місце;
пояснити, чому виникає перевантаження;
запропонувати конкретний план оптимізації із поясненням очікуваного ефекту;
за потреби виконати оптимізацію самого скрипта.
Можливі напрямки оптимізації (якщо це буде доцільно):
не формувати весь XLS-файл у пам'яті;
генерувати файл потоково або частинами;
кешувати готовий прайс;
запускати генерацію у фоні через cron;
обмежити одночасні запуски генерації;
оптимізувати SQL-запити;
перевірити або додати необхідні індекси MySQL;
за потреби розділити великий прайс на декілька файлів;
якщо це буде технічно виправдано — запропонувати інший формат експорту (CSV/XML замість XLS).
Важливо
Потрібно знайти саме першопричину, а не просто збільшити ліміти хостингу або вимкнути частину функціоналу.
Якщо проблема знаходиться у PHP-коді або SQL-запитах генерації прайсу — потрібно показати конкретне місце, пояснити, чому воно створює навантаження, і запропонувати оптимальний спосіб виправлення.
Після діагностики потрібен не лише висновок, а й готовність, за необхідності, виконати оптимізацію PHP-коду, SQL-запитів або алгоритму генерації прайсу.
Załączniki 4
-
3921 112 6 1 Witam, mogę wykonać, pisz, pomogę.
-
85 Dzień dobry
Mogę zająć się wstępną diagnostyką. Pracuję z serwerami Linux, VPS/serwerami dedykowanymi, stosem webowym PHP/MySQL oraz infrastrukturą serwerową w kontekście hostingu i centrum danych.
W takich przypadkach ważne jest, aby nie patrzeć tylko na logi PHP, ponieważ 503/508 i szczyty Entry Processes często są nie pierwotną przyczyną, a już skutkiem. Problem może leżeć zarówno w samej stronie lub MySQL, jak i na poziomie OS, dysku, I/O, swap, wirtualizacji, limitów hostingu lub zasobów samego serwera.
Osobno warto wykluczyć czynnik infrastrukturalny: gdzie dokładnie znajduje się serwer, czy to shared hosting / VPS / dedykowany, jakie są tam limity, czy nie ma problemów z podsystemem dyskowym, fizycznym węzłem lub stroną dostawcy hostingu. Szczególnie jeśli projekt długo działa na jednym serwerze lub taryfie.
Najpierw sprawdzę, co dokładnie dzieje się w momentach szczytów: access/error logs, PHP workers / LVE / Entry Processes, MySQL slow queries i locks, CPU/RAM/swap/iowait, disk I/O, zadania cron, OPcache, logi systemowe/OOM oraz możliwy ruch botów.
…
Pracowałem z PHP 5.x. Dla starego projektu ważne jest, aby nie wprowadzać nagłych zmian „na ślepo”, a najpierw dokładnie określić wąskie gardło i dopiero po tym zaproponować rozwiązanie.
Wstępna diagnostyka z krótkim technicznym podsumowaniem — 3000 UAH.
Orientacyjny czas — do 2 dni.
Jeśli okaże się, że problem leży po stronie dostawcy hostingu lub fizycznego/wirtualnego węzła, czas może się wydłużyć, ponieważ część kontroli lub usunięcia będzie zależała od odpowiedzi i działań hostingu.
Dalsze prace, jeśli będą potrzebne, — po uzgodnieniu zakresu i kosztów.
Przed rozpoczęciem pracy omówimy aktualną infrastrukturę, panel hostingu, wykresy obciążenia oraz przedziały czasowe, w których najczęściej występują zawieszenia.
-
6589 28 0 Serwer zawiesza się z szczytami CPU/RAM i Entry Processes — klasyczny obraz wyczerpania puli procesów PHP, ale przyczyna może być różna, dlatego należy zacząć od diagnostyki, a nie od "podkręcania limitów".
Co sprawdzę jako pierwsze: slow query log MySQL (zapytania trwające ponad 1-2 sekundy często są źródłem problemu), stan puli pracowników Apache/LiteSpeed w czasie szczytu przez `server-status` lub `mod_status`, oraz `vmstat`/`iotop`, aby zrozumieć, czy to obciążenie związane z CPU, czy z I/O. Równolegle spojrzę na `SHOW PROCESSLIST` i `SHOW ENGINE INNODB STATUS` — PHP 5.6 + stary MySQL często powodują deadlock lub burzę blokad tabeli bez żadnego zapisu w logach PHP.
Koszt wstępnej diagnostyki z pisemnym raportem o przyczynie oraz rekomendacjami: 1500 UAH. Stawka godzinowa dla dalszych prac: 500 UAH/godz.
Jaka CMS lub framework stoi za sklepem, i czy jest możliwość podłączenia się w momencie następnego zawieszenia (lub czy są zapisane metryki z czasu incydentu)?
-
626 1 0 Dzień dobry! To nasz profil — diagnostyka zawieszeń serwerów Linux pod obciążeniem. Po objawach już widać kierunek:
— HTTP 508 = osiągnięto limit zasobów (procesy/pamięć), typowo podczas skoku obciążenia;
— 503 + Client.Timeout = backend (PHP-FPM/Apache + MySQL) się dusi, nie zdąża odpowiedzieć.
Jak będę szukał PIERWOTNEJ PRZYCZYNY, a nie objawów:
1. Po logach + wykresach obciążenia łapię moment zawieszenia → koreluję z CPU/RAM/IO/połączeniami MySQL;
2. PHP-FPM/Apache (max_children, wolne zapytania), slow-log MySQL, OPcache;
3. PHP 5.6 + kod 15-letni — częsty winowajca: ciężkie/niezamknięte zapytania, brak indeksów, blokady tabel;
4. Raport: pierwotna przyczyna + dlaczego właśnie ona + optymalne rozwiązanie (bez kulawych rozwiązań).
…
Proszę o doprecyzowanie: hosting VPS czy shared/panel? Zawieszenia według harmonogramu czy pod ruchem/kronem? Jestem gotów się tym zająć.
-
4873 107 0 Cześć, Roman!
Masz sklep internetowy oparty na serwerze Linux/PHP, który okresowo się zawiesza, co negatywnie wpływa na działanie sklepu. Aby znaleźć przyczynę tych zawieszeń, zacznę od analizy logów serwera, aby określić, które procesy lub zapytania mogą być przyczyną tych problemów. Mam doświadczenie w pracy z podobnymi problemami, więc od razu widzę, gdzie będą niuanse z optymalizacją części serwerowej i jakie parametry należy sprawdzić.
Ostateczną cenę i termin podam, jak tylko wyjaśnimy kilka szczegółów.
Profil:Freelancehunt
Opinie:Freelancehunt
-
1885 29 1 1 Cześć! Jestem gotów pomóc w Twoim projekcie. Mam duże doświadczenie w programowaniu i mogę zrealizować wszystkie niezbędne komponenty zgodnie z Twoją dokumentacją. Gwarantuję wysoką jakość wykonania w ustalonym terminie.
-
196 mamy już praktycznie gotowe podejście do takich diagnostyk starych sklepów PHP/MySQL, można szybko dostosować kontrole do waszego serwera i omówić tutaj pierwsze kroki ))
Mamy ponad 10 lat praktyki z serwerami Linux, SSH, serwerami WWW i MySQL, w tym z okresowymi zawieszeniami, 503, 508 oraz starymi projektami PHP 5.x.
Wstępna diagnostyka - 6000 UAH, orientacyjnie 1-2 dni robocze.
Dalsze prace po uzgodnieniu - 1200 UAH za godzinę.
Mogę zacząć w najbliższym wolnym terminie po SSH, panelu, logach i wykresach.
Najpierw sprawdzę nie tylko logi PHP, ale także LVE lub Entry Processes, kolejki Apache lub Nginx lub OpenLiteSpeed, liczbę workerów, limity hostingu i momenty szczytowe.
Następnie porównam logi dostępu, error logs, MySQL slow log, SHOW PROCESSLIST, locks, iowait, swap, OOM, cron, boty, OPcache oraz długie zapytania w czasie zawieszeń.
Zobaczcie, tu jest niuans - 508 często wskazuje nie na błąd PHP jako taki, ale na limit procesów lub zablokowane workery, dlatego trzeba obserwować serwer w momencie szczytu, a nie tylko po nim.
Uściślę dwa punkty.
… Czy jest CloudLinux lub limity LVE na hostingu?
Czy szczyty zbiegają się z cronem, importem towarów, parserami lub ruchem reklamowym?
Podobne przykłady pod względem logiki działania.
https://business.ingello.com/prime-eva - sklep internetowy i detaliczny, gdzie ważna jest stabilność, księgowość i obciążenie.
https://business.ingello.com/carveli - sklep internetowy z integracjami i logiką operacyjną.
Nasz landing FLH do takich zadań - https://systems-fl.ingello.com/ua
-
207 Proszę powiedzieć, w jakich godzinach najczęściej występują zawieszenia, czy to VPS/wydzielony, czy współdzielony hosting, i czy możecie dostarczyć błędy serwera WWW/MySQL za te okresy? Czy były ostatnio jakieś zmiany (aktualizacje, import, cache/wtyczki)?
Mamy ponad 4 lata doświadczenia z serwerami Linux, MySQL i wydajnością; wielokrotnie znajdowaliśmy przyczynę 503/508 (limity PHP-FPM/OPcache, blokady MySQL/wolne zapytania, IO/OOM, ruch botów). Narzędzia: htop/atop, iostat/sar, ss, dmesg/journalctl, status serwera WWW, logi PHP-FPM/OPcache, log wolnych zapytań MySQL + pt-query-digest, korelacja z wykresami. Pracowaliśmy z PHP 5.x. Wstępna diagnoza: 100 USD (do 5 godzin), stawka później 20 USD/godzinę. Start — dzisiaj. Najpierw sprawdzimy limity CPU/RAM/Entry Processes/IO, konfigurację PHP-handler/OPcache, wolne zapytania/blokady, ruch botów oraz kernel/OOM.
Jesteśmy gotowi połączyć się przez SSH i zacząć. Wyślemy krótki wykaz dostępów i uzgodnimy plan działania.
-
Забули уточнити який хостер та параметри сервера.