четверг, 5 июля 2012 г.

AppFabric Caching: 100% CPU

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

Когда уже не осталось других вариантов, я вспомнил про распределенный кэш. И точно! У одного из хостов в кластере процессор был загружен на 100%. Сделал Stop-CacheHost на нем - не помогло, процесс explorer по-прежнему забирал 100%. Перегрузил машину - заработало нормально.

Как же так получилось? Вроде ж кластер должен обеспечивать высокую надежность? Дело в том, что если один сервер полностью падает, то он действительно автоматически исключается из кластера, и всё работает. Но в нашем случае проблемный сервер не упал полностью - он продолжал работать, только медленно.

Как с этим бороться? Во-первых, надо мониторить нагрузку на сервера и разбираться, если она слишком выросла. В принципе, наши администраторы так и делают, но именно за кэшем особо не следили. Расслабились - уже год используем AppFabric, и никаких проблем не было. Во-вторых, в конфигурации клиентов надо уменьшить таймауты. В нашем случае это должно быть не 15 секунд, а максимум секунда-два.

Но, насколько я понимаю, автоматически отключить тормозящий сервер AppFabric всё равно не сможет...

P.S. Мы не используем High Availability option. Не знаю, решена ли там эта проблема.

1 комментарий:

vic комментирует...

А у нас в свое время кластер крутился под юнихом. Всё работало замечательно и только случайно один раз заметили, что CPU на одном из серверов занят на 100%. Но что интересно, машина продолжала безотказно работать, отзывалась, при удаленном доступе тут же отвечала на команды и т.п. Я сама не юниксоид, но с тех пор прониклась к юниксу глубоким уважением :).

Ratings by outbrain