2010-03-08 42 views
9

Tôi có một tính năng trong CMS cho phép người dùng tải lên tệp zip đầy đủ hình ảnh và máy chủ sẽ trích xuất chúng và chèn từng tệp vào thư viện hình ảnh. Tôi đã nhận thấy rằng điều này xay lên CPU khá nghiêm trọng và gây ra các yêu cầu khác để làm chậm.Chạy tác vụ ở chế độ nền với mức ưu tiên CPU thấp hơn

Tôi đang nghĩ đến việc sử dụng plugin delay_job để ủy quyền mỗi hình ảnh bổ sung vào nền, nhưng tôi cũng muốn cấp cho quá trình đó mức độ ưu tiên CPU thấp hơn để nó không làm hỏng máy chủ.

Tôi khá tự tin trong phần trì hoãn bài tập, nhưng phần điều chỉnh là nơi tôi bị kẹt. Có cách nào ruby ​​giảm ưu tiên của một cuộc gọi phương thức?

Đó là thay đổi kích thước hình ảnh khiến cho CPU nhai.

Bất kỳ ý tưởng nào chào mừng :)

Trả lời

6

Nếu CMS của bạn đang chạy trên hệ thống Linux, thì bạn có thể thực hiện việc này bằng lệnh "đẹp". "đẹp" sẽ bắt đầu một quy trình ở mức độ ưu tiên thấp hơn. Cách dễ nhất để sử dụng nó là chỉ cần đặt tốt đẹp ở phía trước của lệnh của bạn. Vì vậy, nếu bạn đang chạy các lệnh như

unzip uploaded-images.zip

thay vì chạy

nice unzip uploaded-images.zip

này sẽ làm cho quá trình giải nén để có được ưu tiên CPU thấp hơn, cho phép các tiến trình khác chạy đầu tiên. Xem man page để có thêm tùy chọn, như cách điều chỉnh mức độ ưu tiên.

+0

Cảm ơn vì điều đó, tôi cũng tình cờ gặp phải điều này với google: http://stackoverflow.com/questions/1340142/preventing-delayed-job-background-jobs-from-consuming-too-much-cpu-on-a -single-se –

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