2015-04-23 22 views
5

Tôi đang sử dụng máy chủ Ubuntu 14.04 (8 lõi, RAM 16 GB) để lưu trữ một trang web PHP, MySQL và Redis. Web PHP và MySQL có lưu lượng truy cập rất thấp (MySQL: Truy vấn trên mỗi giây trung bình: 0,825). Redis xử lý 8011 lệnh mỗi giây.Ubuntu 14.04 nc 100% sử dụng CPU

Hôm nay tôi đã nhận thấy rằng nc vẫn ở phía trên cùng của 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 nc cho:

[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 

Một tra cứu nhanh chóng trên man poll mang lại cho tôi thông tin mà poll waits for one of a set of file descriptors to become ready to perform I/O.

thế nào thế nào để tôi tìm hiểu những gì đang xảy ra để mô tả tập tin (là nó mô tả tập tin vấn đề?) Và sửa chữa nc ăn lên 100% CPU?

Trả lời

6

Gần đây, chúng tôi đã gặp sự cố tương tự. Chúng tôi có một công việc cron gửi số liệu thống kê redis lên than chì qua udp qua netcat và sau khi đưa một máy chủ graphite của chúng tôi xuống trong một tuần trước, chúng tôi nhận thấy rằng việc sử dụng CPU trên các hộp redis của chúng tôi tăng vọt. Nó dường như là một lỗi trong netcat: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=752931

Lệnh chúng tôi đã chạy được một cái gì đó như thế này:

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

Sử dụng 'thoát' tùy chọn (-q), như trái ngược với 'timeout' tùy chọn (-w), dường như khắc phục vấn đề cho chúng tôi:

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

Hy vọng điều đó sẽ hữu ích!

+0

Cảm ơn trường hợp sử dụng của tôi giống hệt nhau. Điều này hoàn toàn trả lời làm thế nào để sửa chữa nc bằng cách sử dụng CPU 100%. – Aivaras

Các vấn đề liên quan