F**k up — оптимизация работы с памятью и соединений с БД

Опубликовано Опубликовано в рубрике Easy Patch, SQL

Ни для кого не секрет, что услуга виртуального хостинга зачастую имеет жёстокие ограничения на ресурсы. Из-за этого страдают как пользователи, так и техподдержка самого сайта. При этом support самого хостера зачастую не может или не хочет содействовать в решении проблемы.
Итак, с чем же можно столкнуться?

Первое, на что натыкается разработчик — это лимит места на жёстком диске. Здесь посоветовать особенно нечего. Разве что стараться не хранить HD-видео у себя на сервере или купить более «щедрый» тариф.

Вторая проблема — это лимит оперативной памяти. Здесь уже начинают играть роль подключаемые процессы и нагрузка на сайт.

Первое — это, скорее всего циклы с вложенными в них запросами к БД, сами запросы, которые выводят огромные массивы. Второе — это количество одновременных посетителей сайта.

От второго спасает планирование — на этапе создания сайта разработчик должен чётко понимать, какая нагрузка ляжет на сайт на том или ином этапе его существования.

От первого спасает оптимизация. Во-первых, не стоит укладывать всю информацию в один запрос. Во-вторых, не стоит набивать запросы в цикл. Нужно понимать, что общее количество обращений к базе будет равно произведению количества шагов цикла на количество запросов внутри описания цикла.

Ну, и третья проблема — это превышение соединений с базой данных. Косяки тут могут быть как со стороны разработчика, так и со стороны хостера.

Разработчику следует помнить, что запросы к БД надо обязетельно завершать командой mysql_close();. Также при выходе ошибки про ‘max_user_connections‘ стоит проверить, не висят ли незавершённые процессы в системе. Для этого зайдите в PHPMyAdmin в раздел сервера, найдите там вкладку «Процессы» и посмотрите, сколько соединений стоит в очереди на выполнении. Вполне возможно, что где-то CMS дала сбой, и процесс зациклился. Косяк хостера тут в том, что при перезапуске виртуального сервера, сервер БД может не перезапускаться. А потому не стоит пренебрегать проверкой всех возможных проблем со своей стороны.

Безошибочного кода Вам!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *