我在Linux上和perl dancer一起玩,如果浏览器通过局域网直接连接到服务器,所有人都很好,并且dany。但是,当我通过广域网和连接浏览器为IE9时,偶尔忙碌的光标不会消失。当阅读GET请求时,舞者随机挂起
我可以通过重新加载页面apx连续10次来挑起这个问题。即使在每次重新加载之间等待整整一秒时,我也会遇到这个问题。页面本身非常简单,并通过w3c检查。
如果我以root用户身份运行dancer,或者端口是80还是3000,那么这并没有什么区别。同时也用apache测试过一个页面的频繁重新加载,这似乎没有问题。
我运行strace,并且我有一个印象,那就是当舞者尝试读取请求数据时有时候并不是有效的。这是跟踪的样子
当它的工作原理:
{sa_family=AF_INET, sin_port=htons(52073), sin_addr=inet_addr("78.42.213.92")}, [16]) = 4
ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfab5028) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(4, 0, 0xbfab5070, SEEK_CUR) = -1 ESPIPE (Illegal seek)
ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfab5028) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(4, 0, 0xbfab5070, SEEK_CUR) = -1 ESPIPE (Illegal seek)
fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
getpeername(4, {sa_family=AF_INET, sin_port=htons(52073), sin_addr=inet_addr("78.42.213.92")}, [16]) = 0
read(4, "G", 1) = 1
read(4, "E", 1) = 1
read(4, "T", 1) = 1
当它挂起
{sa_family=AF_INET, sin_port=htons(52225), sin_addr=inet_addr("78.42.213.92")}, [16]) = 4
ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfab5028) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(4, 0, 0xbfab5070, SEEK_CUR) = -1 ESPIPE (Illegal seek)
ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfab5028) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(4, 0, 0xbfab5070, SEEK_CUR) = -1 ESPIPE (Illegal seek)
fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
getpeername(4, {sa_family=AF_INET, sin_port=htons(52225), sin_addr=inet_addr("78.42.213.92")}, [16]) = 0
read(4,
,然后坐下,直到永远。任何想法我能做什么?
我也看到IE9在普拉克用HTTP :: Server :: Simple运行的舞者上持有锁。我的临时解决方案一直是使用Firefox,而我的长期解决方案是在某些时候使用Plack的高端Web服务器。 Dancer为不同的web服务器(如nginx)提供配置文档 - 类似于@wes的解决方案。 –
@wes我把舞者放在apache后面,看起来都很好。谢谢 –