Итак, наша новая сборка имеет 100% пиков процессорного времени на каждом сервере через произвольные интервалы. В течение длительного времени это делает сайт полностью безразличным - это будет происходить в часы пик, когда люди из разных стран заходят на сайт и т. Д.
Мы смотрели на perfmom, профилировщики памяти, CLR-профилировщик, sql-профилировщики, профилировщик Red Gate и мутировок, пробовали нагрузочное тестирование в UAT - но не можем даже воспроизвести проблему. Это может означать, что только тысячи пользователей, попавших на живой сайт, вызывают это.
Мы обратили внимание на то, что новый код - сломанная сборка - на самом деле использует заметно меньше потоков.
Мы также используем пружину для МОК - это имеет репутацию кровати?
Что еще хуже, мы не можем развернуть, чтобы жить из-за влияния на бизнес - поэтому не можем сузить проблему до подмножества новых функций, которые мы добавили.
Мы действительно уничтожены - есть ли у кого-нибудь боевые шрамы, которые могут спасти нам несколько жизней?
Ответы:
Я предлагаю делать дампы памяти и анализировать их в WinDdg с помощью Sos. Я исправил некоторые проблемы с нашей продукцией, которые, вероятно, не смог бы диагностировать без WinDbg.
У Тесс Фернандес есть отличный блог, где вы можете научиться анализировать дампы памяти.
источник
Обычно это вызвано очисткой больших долгоживущих объектов в GC ( эта проблема возникла в stackoverflow, см. Ссылку ). Вы храните много коллекций объектов в кэше или сеансе?
Штурм GC
Я также рекомендую вам создать и настроить новый сервер для тестирования. Если у вас случайное сумасшествие и вы не знаете, почему и не можете его воспроизвести, я бы указал пальцем на аппаратное обеспечение или конфигурацию, а не на код.
источник
Это виртуальный сервер с общими ресурсами или физический сервер? Если это первое, возможно, вы могли бы посмотреть на выделение ресурсов для этого сервера. Удачи...
источник
Попробуйте использовать
cache server
как интерфейсApache Traffic Server (ATS)
.Хотя это не решит проблему, это может помочь выявить ее, потому что вы в то же время перенесете потенциально опасную нагрузку с бэкэнда (проверяя, есть ли у внешнего интерфейса также проблемы) и сделаете вещи менее нагретыми на бэкэнде, так что это будет легче увидеть что не так.
источник
Пытаться угадать ошибку без данных бессмысленно. Да, кому-то из stackoverflow или в вашей инженерной команде может повезти, но это просто плохая инженерия, и вы не можете составить план того, сколько времени у вас уйдет на то, чтобы попробовать каждое предположение, и если даже вы обнаружите проблему.
100% CPU немного подозрительно в том смысле, что вряд ли это будет ввод / вывод (при условии, что db - это еще один блок, медленная база данных не должна вызывать 100% CPU на веб-серверах). Вы должны выглядеть ближе к дому.
источник