Трабла с версией 3xx Есть решение

Доброго времени суток, коллеги.

Появилась проблемка. Есть у меня на серваке сайт товарища, который крутится на какой-то допотопной версии (3xx) вебасиста. Все было вполне себе хорошо, но пару дней назад данный сайт начал класть мой сервер (4 ядра, 16 гигов) просто в усмерть. Все ядра на 100%, память в пиках тоже и даже начало в своп писать, чего я вообще у себя еще ни разу не видел =)

Большая часть сайтов у меня крутится на nginx + php-fpm (пыха 7.1), но именно этот экземпляр использует индейца и php 5.4. Собственно анализ и показал, что ядра зажирает имено апач, а память, по ходу, жрет mysql (пользователя этого сайта). В логах из странного вижу только вот такое

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 576 bytes) in .../published/SC/html/scripts/core_functions/db_functions.php on line 35

Вопрос. Кто-то может подсказать, как это вылечить? Не силен в этой древности, а копать времени вообще нет =(

3 ответа

  • 5
    Алексей Webasyst 29 мая 2017 08:51 # Решение

    Первоначально увеличьте лимит до 512 например.
    Проверьте базу сайта - если там миллиард отзывов то может стоит их почистить.
    Через Mysql посмотрите на каком запросе зависает - кажется был параметр slow query.

  • 5

    Ну для начала можно было просто посмотреть в базу данных. Так как обычно там спам в отзывы льется рекой, то я бы посмотрел, а не миллиард ли отзывов уже в базе. Если бы беглый осмотр базы данных не показал, что есть какие-то перегибы, тогда уже можно подумать еще о чем-то.

  • 1

    О, спасибо, други.

    Почистил спам-отзывы, вроде полегчало.

    • +2

      Самый простой и действенный способ заблокировать новые комменты, добавить в таблицу новое поле с значением по умолчанию 1, с не разрешенным NULL. Всем текущим отзывам присвоится 1. Затем с поля убираем значение по умолчанию. Новые записи не появятся, так как при INSERT не заполнено ваше новое поле.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите