2013-02-08 20 views
1

我使用瘦服務器+ Ruby on Rails + Mysql,並且我有幾個cronjobs每小時對數據庫執行大量處理(腳本需要大約1-2分鐘才能完成) 。頁面停止響應與Ruby on Rails和MySQL

當cronjobs運行時,網站停止加載,並且只在cronjob完成後作出響應。

所以我的問題是,我如何使一切都獨立,異步或並行,以便當cronjobs運行時,網站正常加載。

任何指南的鏈接,或非常讚賞的一般建議。

更新:

我很抱歉,我不能分享的cronjob的代碼,但基本上它幾千要求,如:

SELECT 1 AS one FROM `table` WHERE `table`.`type_id` = BINARY '1251625345_4146645145056' LIMIT 1 

,然後插入幾千如果先前一個返回null(表示該條目不存在)

+0

cronjob做了什麼?你能分享這個代碼嗎? – Swards 2013-02-08 22:54:06

+0

我編輯了這個問題,添加了一些解釋。 – Bndr 2013-02-08 23:18:08

回答

1

您的cron作業是否要求Rails應用程序執行這些選擇/插入操作?

如果是這樣,

瘦是一個單線程的Web服務器。它不能同時處理多個請求。您的cronjob應該啓動另一個Ruby進程(例如Rake任務)來完成這項工作。

+0

嗨!我做了一些關於rake任務和ruby進程的搜索,結果發現使用wget來運行腳本是一個糟糕的主意。我現在創建了幾個從cronjob運行的rake任務,比如「cd/to/directory && rake task:name」,到目前爲止,所有東西似乎都沒有被主站點阻塞。謝謝! – Bndr 2013-02-10 05:37:57