Переопределить остановку профиля golang в случае прерывания - PullRequest
0 голосов
/ 08 января 2019

Когда я kill -SIGINT pid на службе в Голанге, у меня происходит постепенное отключение, когда я вызываю profile.Stop, но прежде чем я смог позвонить, я получил это сообщение: profile: caught interrupt, stopping profiles

Я даже не могу вызвать профиль. Остановитесь, потому что он срабатывает раньше, однако отключение соединения для прослушивания grpc и couchbase работает правильно.

Могу ли я переопределить остановку этого некорректно работающего профиля?

1 Ответ

0 голосов
/ 08 января 2019

Существует функция profile.NoShutdownHook, которая контролирует, должен ли пакет профилирования перехватывать SIGINT, для чего можно чистить профили.

Вы можете использовать / передавать вышеупомянутую функцию в качестве опции profile.Start(), если хотите отключить это поведение:

profile.Start(profile.NoShutdownHook)

Запуск и остановка профилирования внутри функции лучше всего выполнять через deferred, например ::

// disable the automatic shutdown hook.
defer profile.Start(profile.NoShutdownHook).Stop()

Если вы отключите функцию автоматического отключения, убедитесь, что вы правильно вызвали Stop() в своем обработчике отключения.

...