【发布时间】:2012-08-15 23:45:16
【问题描述】:
请参阅下面的 EDIT#2 了解可能的根本原因
我的 Django 线程/进程(同时使用 'method=threaded' 和 'method=prefork' 时会发生同样的事情),每 10 分钟左右,随机构建如下: http://i.imgur.com/VyUAv.png 例如很多这样的过程:
python ./manage.py runfcgi method=threaded host=localhost port=8888
然后在一分钟左右的时间里,线程/进程建立起来足以取出我的网站。
网站负载非常小,但流量相当高,所以我认为这是某种阻塞问题。
关于如何解决甚至有效调试此问题的任何想法? 谢谢。
编辑:在我的许多 Django 视图中,我也经常使用 Redis。我现在开始研究 Redis 死锁问题是否是问题的根源......
EDIT#2:我看到问题开始时 Redis 被固定在 100% CPU,这让我相信 Redis 死锁是核心问题。
我也遇到了这个错误:
"(error) LOADING Redis 正在将数据集加载到内存中"
当尝试通过此命令完全重启 Redis 时:
./src/redis-cli flushall
重要提示:我在一个单独的 EC2 微型实例上使用 Redis 2.2.7,而不是我的 Django Web 应用程序。
【问题讨论】:
-
您是否在任何地方使用线程或进程?
-
服务器上的任何地方?是的,线程和进程,用于不同的事物。也许我不明白你的问题?
-
对不起,我的意思是在 django 内部,有一次,我看到一个死锁导致很多额外进程启动的情况。
-
您是如何调试或设法绕过该死锁的?谢谢!
-
Redis 是单线程的。 Redis 中不可能出现死锁,因为没有锁。
标签: python django nginx redis deadlock