2015-04-23 3 views
5

Я использую сервер Ubuntu 14.04 (8 ядер, 16 ГБ ОЗУ) для размещения веб-сайта PHP, MySQL и Redis. PHP и MySQL имеют очень низкий трафик (MySQL: количество запросов в секунду: 0,825). Redis обрабатывает 8011 команд в секунду.Ubuntu 14.04 nc 100% загрузка процессора

Сегодня я заметил, что н.д. остается в верхней части top:

8348 root  20 0 11224 764 624 R 100.0 0.0 2277:01 nc                                
8319 root  20 0 11224 760 624 R 100.0 0.0 2277:59 nc                               
8324 root  20 0 11224 764 624 R 100.0 0.0 2278:09 nc                               
8344 root  20 0 11224 760 624 R 100.0 0.0 2277:07 nc 

Stracing н.д. дает:

[email protected]:/home/user# strace -p 8348 
Process 8348 attached 
poll([{fd=3, events=POLLIN}, {fd=-1}], 2, 1000) = 1 ([{fd=3, revents=POLLERR}]) 
poll([{fd=3, events=POLLIN}, {fd=-1}], 2, 1000) = 1 ([{fd=3, revents=POLLERR}]) 
poll([{fd=3, events=POLLIN}, {fd=-1}], 2, 1000) = 1 ([{fd=3, revents=POLLERR}]) 
intentionally cutted N lines from output 

Быстрый поиск по man poll дает мне информацию, что poll waits for one of a set of file descriptors to become ready to perform I/O.

Как я узнаю, что происходит с файловыми дескрипторами (это проблема с файловыми дескрипторами?) и исправить nc, дойдя до 100% процессора?

ответ

6

Недавно у нас была аналогичная проблема. У нас есть задание cron, которое отправляет некоторую статистику redis для графитирования по udp через netcat, и после того, как на прошлой неделе мы немного спустили один из наших графитовых узлов, мы заметили, что использование ЦП в наших красных ящиках резко увеличилось. Это, кажется, ошибка в netcat: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=752931

Команда мы были запущены было что-то вроде этого:

echo "{redis_metric}" | nc -w 1 -u ${graphite_host} 8125 

Использование «бросить» вариант (-q), в отличие от «тайм-аут» вариант (-w), по-видимому, исправить проблему для нас:

echo "{redis_metric}" | nc -q 1 -u ${graphite_host} 8125 

Надеюсь, что это поможет!

+0

Спасибо, что я использую ваш случай точно так же. Это полностью отвечает на то, как исправить nc, используя 100% CPU. – Aivaras

Смежные вопросы