Здравствуйте!
подскажите, пожалуйста, что можно сделать:
без нагрузки сайт работает нормально, но стоит одной новости стрельнуть, как валит толпа народа и сайт не падает, но вместо 1 секунды получается 16 сек на загрузку, процессор получает 93% нагрузки, в топе висит куча процессов php-fpm.
как-то можно эту одну новость конкретно закешировать, чтобы она как-то сразу отдавалась?
сейчас ситуация такая:
Cpu(s): 19.2%us, 1.7%sy, 0.0%ni, 78.8%id, 0.2%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 12326976k total, 5240516k used, 7086460k free, 123820k buffers
на что хоть посмотреть, что сделать можно?
новость про отставку сердюкова, обычный пресс-релиз.
тестирование прямо на серваке
ab -n 100 -c 100 url
показывает:
Concurrency Level: 100
Time taken for tests: 8.756 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 7478700 bytes
HTML transferred: 7430500 bytes
Requests per second: 11.42 [#/sec] (mean)
Time per request: 8755.606 [ms] (mean)
Time per request: 87.556 [ms] (mean, across all concurrent requests)
еще по всякому попробовал, 1 запрос быстро выполняется - меньше секунды, что посоветуете посмотреть?
пользователи все анонимы, стоит memcached, apc и т.д.
сайт не вешается - просто еле тащит - как ускорить можно?
Комментарии
Установить побольше минимальное время жизни кэша.
динамика такая (майл.ру поминутно)
![](http://img96.imageshack.us/img96/5950/statv.png)
ой, ну положите в fastcgi_cache секунд на 30 — для анонимов всё летать будет
Тоже вариант
Но у человека есть мэмкэш, есть подозрение что он просто не работает
вроде отлично должно помочь, а есть пример такой настройки для друпала?
Вроде толково расписанно https://github.com/perusio/drupal-with-nginx
подтверждаю.
мемкеш для cache_* таблиц, страницы туда не ложатся
О_о
а как же cache_page?
Чёэто?
а cache_page разве стОит? - их там 300к+ страниц
кеш имеет свойство чиститься
Можно ещё Varnish или squid прикрутить![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Варниш по шустрее будет. ИМХО.
в общем не знаю, когда нагрузка была, видно просадку посередине - писали хостеру с просьбой помочь, думали дос.
у них там защиты нет никакой - на колокейшн решайте проблемы сами - они предложили и закрыли зарубежный трафик. я ему написал, что это страница попала в яндекс и блокировку надо убрать, вот его ответ:
Если мы можем ещё чем нибудь помочь, будем рады.
странно, откуда возьмется 20% полосы при такой нагрузке? понятно, что майл.ру не самая адекватная статистика, и картинок на той странице немного вроде. cacti, к сожалению, отключена была на сервере - она после обновления заглючила, не перенастроил. т.е. нагрузка думаю была побольше чем на графике в несколько раз.
я хотел узнать все-таки про cache_page - какая практика - его кешируют или нет, когда настраивали пару лет назад, там всякие глюки вылезали с аяксом, с капчей, еще с какими-то модулями совместимость плохая была - на production его используют или нет?
сейчас кешируется так:
<?php$conf = array(
'cache_inc' => './sites/all/modules/memcache/memcache.inc',
'session_inc' => './sites/all/modules/memcache/memcache-session.inc',
'memcache_servers' => array(
'localhost:11211' => 'default',
'localhost:11212' => 'block',
'localhost:11213' => 'content',
'localhost:11214' => 'filter',
'localhost:11215' => 'form',
'localhost:11216' => 'menu',
'localhost:11217' => 'session',
'localhost:11218' => 'users',
),
'memcache_bins' => array(
'cache' => 'default',
'cache_block' => 'block',
'cache_content' => 'content',
'cache_filter' => 'filter',
'cache_form' => 'form',
'cache_menu' => 'menu',
'session' => 'session',
'users' => 'users',
),
);
?>
я правильно понимаю, чтобы включить этот cache_page, мне надо включить кеш страницы в нормальный (сейчас отключено) и допустим еще один инстанс мемкеша создать? (их много, но там по 16-32 метров всего, просто, чтоб друг другу не мешали, - сколько для страниц объем лучше сделать?)
Кэш страниц нужен, каптча просто его отключает (попал на этот косяк, думал чёэто у меня кэш не работает).
Я делал так:
'localhost:11218' => 'users',
'users' => 'users',
Это как? Вы пользователей в мэмкэш положили О_о
угу, я также делал, потом смотрел недельку и подбирал размеры, потом еще cacti снимал статистику с мемкеша по загрузке, чтобы не ошибиться.
с users не помню как было, но вроде работает), наверно вы правы, лишнее это.
ну у вас с cache_pages норм все работает?
cache_content:
STAT cmd_get 19110848
STAT get_hits 10178090
STAT get_misses 8932758
странно, получается пополам - или долго не живет, или места мало?
сейчас на 75% занят.
Когда капчу убрал со всех страниц, заработал cache_page
'cache_page' => 'cache_page',
Ещё ошибочка нашлась: sessions
у вас может версия другая?
я где-то на д.орг это подсмотрел, все работает и users там тоже в кеш пихают, не знаю, правда - почему. вот например - http://drupal.org/node/1181968
всем спасибо за советы!
добавил cache_page и стало летать.
пока потестирую - добавил модуль cacheexclude
и в модуле поменял правило - не кешировать ничего, а кешировать только новости (по паттерну news/*)
вроде работает норм.
Ну тогда в тему [Решено]![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Сегодня метеорит возле челябинска упал, блин((
полчаса был забит канал с пиком до 80 мегабит, админка еле грузилась, нагрузка сервера доходила до 76%. все что написано выше было сделано, сейчас пик спал - летает как обычно. что еще может помочь в пик нагрузки?
убрал РЕШЕНО из этой темы, т.к. проблема не решена, подключили второй канал 100 мегабит, не совсем понял правда как в ДНС прописать 2 ip, чтобы равномерно нагрузка шла, но откуда нагрузка на проц в 80% была в пике? если включен memcached и все работает? еще можт картинки куда-нить на cdn закинуть, есть простой способ, или только сложные?
Для двух каналов Вам нужен балансировщик.
Что за проц? ну и что вы хотите при 80 мегабитах.
memcached - не понацея и тоже потребляет ресурсы.
проц 2 xeon e5620.
мне про 2 канала объяснили, что если в днс прописать 2 ip, то выбирается случайным образом, не обязательно равномерным на 2 канала. гигабит на 2 дня не подключишь, только на месяц, а он 40 000 в месяц стоит(( - но затык раньше начался чем сеть забилась, т.к. 100 мегабит датацентр гарантирует необрезанный канал
nginx честно отдавал 502 ошибку, немного подумав, наверное php-fpm не успевал за нагрузкой.
вроде бы есть решение для nginx + memcached связки без php или только сырое?
Пасиб вам большое за комменты. заметил, что все изменилось за пару лет, в том числе и посты на друпале. запостил свою проблему здесь - http://groups.drupal.org/node/283048 надеюсь, что-нибудь подскажут.
Предлагают попробовать микрокеширование как описано здесь - http://fennb.com/microcaching-speed-your-app-up-250x-with-no-n
здесь адаптация для друпала - https://github.com/perusio/drupal-with-nginx
попробую, о результатах отпишусь - вроде это как раз то, что я и искал, и замечательно дает ответ на вопрос в заголовке темы.