2009-04-17 39 views
6

Tôi có một quy trình python (Pylons webapp) liên tục sử dụng 10-30% CPU. Tôi sẽ cải thiện/điều chỉnh việc ghi nhật ký để hiểu rõ những gì đang xảy ra, nhưng cho đến lúc đó, có công cụ/kỹ thuật nào cho phép xem quy trình python đang hoạt động hay không, bao nhiêu chủ đề bận rộn như thế nào?Điều tra quá trình python để xem những gì đang ăn CPU

Cập nhật:

  • cấu hình bản ghi truy cập trong đó cho thấy rằng không có yêu cầu xảy ra, webapp chỉ là chạy không tải
  • không có điểm để cắm vào paste.profile trong chuỗi middleware vì không có yêu cầu , hoạt động phải xảy ra trong chuỗi công việc của webapp hoặc máy chủ web paster
  • chạy paster như sau: "python -m cProfile -o outfile/usr/bin/paster serve dev.ini" và kiểm tra kết quả cho thấy rằng hầu hết thời gian được chi tiêu trong "posix.waitpid". Paster chạy webapp trong tiến trình con, hoạt động tiến trình con không được nhặt bởi profiler
  • nhìn vào; hack PasteScript "phục vụ" lệnh để trình con sẽ được cấu hình

Một cập nhật:

Sau nhiều mày mò , gắn vào profiler ở những nơi khác nhau và làm quen với PasteScript bên trong, tôi phát hiện ra rằng tải CPU liên tục biến mất nếu ứng dụng được khởi động mà không có tham số "- reload" (cờ này cho paster tự khởi động lại nếu thay đổi mã, tiện dụng trong phát triển), đó là tốt trong môi trường sản xuất.

+1

Hệ điều hành nào? – mavnn

Trả lời

7

Profiling có thể giúp bạn tìm hiểu một chút về những gì nó đang làm. Nếu sắp xếp của bạn đầu ra của "thời gian", bạn sẽ thấy những chức năng được chowing thời gian cpu, mà nên cung cấp cho bạn một số gợi ý tốt.

6

Như bạn đã lưu ý, trong chế độ tải lại, Paste quét hệ thống tệp mỗi giây để xem có bất kỳ tệp nào đã tải đã thay đổi hay không. Nếu có, thì Paste tải lại quy trình. Bạn cũng có thể cho phép Paste theo dõi các mô-đun mã không phải Python để thay đổi nếu muốn.

Bạn có thể thay đổi khoảng thời gian tải lại bằng tùy chọn --reload-interval, điều này sẽ giảm mức sử dụng CPU khi sử dụng - tải lại vì nó sẽ quét ít thường xuyên hơn.

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