Переписывайте код обновления links.db на CRON, а вывод ссылок с unserialize на include или mem_cache.
Нагрузку на сервер делает не робот и не посетители, а судя по письму хостера - код обновления ссылок. Но для большей стабильности и вывод ссылок не помешает сделать по-человечески. Сколько у вас в сутки хитов на ВЕСЬ сайт? Если больше 30к, то представьте, что функция unserialize обрабатывает файл размером в 100кбайт (примерно на 1000 ссылок) при каждом вызове страницы. Это очень много и это очень напряжно для сервера при такой посещаемости. |
Да, нагрузку создает код обновления ссылок. Я глянул на sape.php - и как понимаю в любом случае ссылки не будут обновлятся чаще чем раз в час. Сейчас поставил раз в 10 часов - и хостер открыл площадку. К вечеру соберется статистика за сутки - посмотрим что скажет хостер.
Цитата:
И я не знаток программирования на php, но вроде там вот такой код Код:
if (filemtime($this->_db_file) < (time()-$this->_cache_lifetime) || filesize($this->_db_file) == 0) { |
Нагрузка может возникать, когда в скрипте запустилась процедура обновления ссылок одновременно при нескольких запросах. В этом коде нету проверки блокировки файла, так что даже теоретически все посетители в онлайне могут вызвать обновление кода, потому что процедура обновления файла происходит минимум 2-3 секунды. Так что в таком промежутке могут быть ещё запросы к сайту, и следовательно ещё запросы на обновление ссылок.
|
хотелось бы потом услышать как ситуация разрешилась и что за хостер (без рекламы чур :))
|
Хм. По идее перед началом запроса делается touch на файл и меняется его время его изменения. И проверка
Цитата:
Если я правильно понимаю код конечно. Пока просле запроса хостера я предложил переименовать sape.php и разблокирова аккаут. В течении часа мне разблокировали аккаут и предложили переименовать файл самому. Я пока увеличил в десять раз $_cache_lifetime и $_cache_reloadtime и попросил промониторить загрузку. На что мне ответили что через 24 часа дадут ответ. Хостер mirhosting.ru |
Цитата:
|
Цитата:
|
Цитата:
виной всему (я думаю) - кривой и перегруженный DNS, т.е. gethostbyaddr() очень долго отрабатывался для конвертации hostname=>ip - я такое наблюдал уже на ВПСке в мирхостинге, когда банальный gethostbyaddr("yandex.ru") отрабатывался аж 10 секунд :) |
Цитата:
В моем понимании происходит все так - проверяем время создания links.db - если старый, то МЕНЯЕМ ВРЕМЯ на текущее и только потом создаем запрос. Даже если будет много запросов - то все равно больше одного соединения устанавливаться не должно. Пообщался еще с сопортом - они не уверены что это именно из исходящих соединений. Сказали что просто для информации об этом сказали. Будем копать дальше. |
Цитата:
PHP код:
217.107.36.132 => 0.000416040420532 217.107.36.132 => 0.000885009765625 если вы наблюдаете там значения порядка 5-15 секунд - то пинайте хостера пусть ставит кеширующий DNS и вообщем решает проблему :) Цитата:
|
Часовой пояс GMT +3, время: 07:31. |
Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.