我正在为我的Catalyst应用程序执行内置开发服务器的常规操作:
DBIC_TRACE=1 perl script/*_server.pl -d -r -p 3001 2>&1 | tee -a /var/log/cat-dev.log
一切都运行得很好,当文件发生变化时,服务器会检测到并重新启动;然后不可预知的是,它显然会被锁定。在本地主机:3001/(和/或局域网上的{local_IP}:3001/ )上浏览该应用程序时冻结,浏览器显示“正在加载...”。或者“连接...”在新连接的情况下。
这已经发生了一段时间了,我之前只是想“哦,好吧”,然后按Ctrl-C‘’ed并重新运行服务器命令。但最近这一次,我在htop中找到了服务器进程,并对其运行了一个strace。它显然非常忙,显然是在检查源文件的状态,以确定它是否需要重新启动。然后我来到这里的StackOverflow,阅读了一下,正要发布这一点,回到浏览器,看到它现在已经提供了页面!
这是在日志文件中..。
[debug] Rendering template "jobs_search_results.tt"
[debug] Response Code: 200; Content-Type: text/html; charset=utf-8; Content-Length: 74540
[info] Request took 963.465151s (0.001/s)
同事们抱怨线程;在这里有一个半相关的查询表明它可能与数据库连接有关(我确实连接到远程数据库);我想知道'-r‘活动……有什么我应该在这里面找的吗?
这是最近更新的Catalyst安装。
发布于 2014-08-22 02:37:11
如果您怀疑重启程序导致了某种奇怪的阻塞,请尝试在没有重启的情况下启动服务器。
基本服务器是单进程的,所以很容易被阻塞。尝试使用forking选项运行您的应用程序,这可能也会使问题变得清晰
https://stackoverflow.com/questions/9333468
复制相似问题