[英]Debug redis, rails and sidekiq
我正在嘗試異步向某些用戶發送電子郵件:
這是昨天完美運作的方法鏈:
DiscussionMailer.delay.new_reply_notification()
在控制台中運行它似乎完美地工作,因為它返回工作者ID。 我可能錯了,這就是那個鍵實際上是什么,但正如你所看到的,從軌道方面看,一切都在發揮作用。
2.0.0p247 :004 > DiscussionMailer.delay.new_reply_notification(User.last, Reply.last, Discussion.last, Forum.last )
User Load (0.6ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1
Reply Load (0.2ms) SELECT "replies".* FROM "replies" ORDER BY "replies"."id" DESC LIMIT 1
Discussion Load (0.2ms) SELECT "discussions".* FROM "discussions" ORDER BY "discussions"."id" DESC LIMIT 1
Forum Load (0.2ms) SELECT "forums".* FROM "forums" ORDER BY "forums"."id" DESC LIMIT 1
2014-05-04T00:54:45Z 48591 TID-5s8e0 INFO: Sidekiq client with redis options {}
=> "3c35e763a23304e3f7e39e1e"
然而,事實並非如此。 根據經驗和軌道炮日志,電子郵件不會靠近軌道炮。 這似乎是因為redis沒有做任何事情:
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 2.6.13 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in stand alone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 48750
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[48750] 04 May 02:02:48.687 # Server started, Redis version 2.6.13
[48750] 04 May 02:02:48.687 * DB loaded from disk: 0.001 seconds
[48750] 04 May 02:02:48.687 * The server is now ready to accept connections on port 6379
我應該得到一些反饋,對吧?
我關閉redis服務器並嘗試同樣的事情,我得到:
Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)
這很好,因為它顯示redis和sidekiq可以通信,但是很糟糕,因為神的名字正在發生什么? 我該如何調試這個問題? railgun日志和rails日志都沒用。 我在哪里可以找到redis日志? 或者這對工人(或者他們是什么,幾個小時前才了解redis)甚至沒有“達到”redis都沒有幫助?
看起來你還沒有啟動/重新啟動sidekiq。 做它,它會工作。
錯誤消息:
Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)
不是Redis和Sidekiq進行通信,看起來你的應用程序的redis gem無法與應用程序本地主機的端口6379上的Redis服務器通信。
您需要啟動Redis服務器,當它啟動並運行時啟動您的Sidekiq服務器。 啟動每個的過程取決於每個的配置。
至於您的日志,當您啟動每個服務器時,您將要將其輸出導出到日志文件。 因此,您應該在計算機的某個位置創建一個空日志文件,然后當您啟動服務器時,您可以修改命令:
redis-server > /path/to/your/redis.log 2>&1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.