У нас есть довольно большой VPS, на котором запущен наш пользовательский код сервера (не веб-серверы, а игровые серверы), в случайные моменты сервер, кажется, останавливается на несколько секунд, как мы можем отследить поток / процесс, который его вызывает?
Монитор производительности может сказать нам, что тормозит, процессор, жесткий диск и т. Д., Но он не может сказать нам, что использует это оборудование во время остановки ...
Любые идеи?
Спасибо
Это осложняется тем, что это виртуальная машина, и вы не можете проводить измерения с гипервизора. Вы не можете получить точные измерения того, что происходит на физическом уровне машины, изнутри виртуальной машины.
Это также зависит от того, что именно вы подразумеваете под «остановкой процессов». Но есть несколько вещей, которые вы можете изучить, по крайней мере, для начала.
Получите Process Explorer, который похож на диспетчер задач на стероидах. Запустите это и посмотрите, сколько ЦП потребляется аппаратными прерываниями и DPC во время одного из этих событий. Если он действительно высокий (не более 5%), значит, проблема связана с драйвером. Затем вы можете проверить процесс System и увидеть использование ЦП для каждого отдельного потока в процессе System. Обычно в нем содержится имя файла * .sys, и это будет драйвер, вызывающий проблему.
Второй инструмент, к которому я бы обратился, - это Xperf. Xperf - чрезвычайно мощный и гибкий инструмент для профилирования системы. Он расскажет вам, что вызывает проблемы с производительностью на вашем сервере, если вы используете его правильно.