2013-04-13 27 views
5

Tôi đang chơi với perl dancer trên Linux và tất cả đều tốt và dany nếu trình duyệt kết nối trực tiếp với máy chủ qua mạng LAN. Tuy nhiên, khi tôi kết nối qua WAN trình duyệt là IE9, thì thỉnh thoảng con trỏ bận sẽ không biến mất.Dancer ngẫu nhiên bị treo khi đọc yêu cầu GET

Tôi có thể kích hoạt điều này, bằng cách tải lại trang apx 10 lần liên tiếp. Tôi nhận được vấn đề này ngay cả khi tôi chờ vài giây giữa mỗi lần tải lại. Bản thân trang thật đơn giản và vượt qua kiểm tra w3c.

Nó không có sự khác biệt nếu tôi chạy vũ công dưới dạng gốc, hoặc liệu cổng là 80 hay 3000. Một lần thử nghiệm thường xuyên tải lại trang với apache và dường như không có vấn đề gì.

Tôi chạy strace và tôi có ấn tượng, rằng các dữ liệu yêu cầu đôi khi không availbale tại các vũ công thời gian cố gắng để đọc nó. Đây là những gì các dấu vết trông giống như

Khi nó hoạt động:

{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 

Khi nó bị treo

{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, 

và sau đó nó ngồi mãi mãi. Bất kỳ ý tưởng những gì tôi có thể làm gì?

Trả lời

4

Tôi chạy vào một similar problem với IE9 kết nối với máy chủ Catalyst dev. Eric Lawrence (Trưởng nhóm IE !?) cho rằng có thể do tính năng kết nối nền của IE9. IE9 sẽ mở một kết nối TCP nền để tăng tốc các yêu cầu trong tương lai tới máy chủ, nhưng điều này rõ ràng là gây ra các vấn đề cho các máy chủ luồng đơn. Nếu bạn đang chạy máy chủ mặc định của Dancer (HTTP :: Server :: Simple :: PSGI), you won't be able to handle IE9.

Tôi đã làm việc xung quanh nó bằng cách ủy quyền từ Apache. Nó làm cho dev nhiều hơn một chút rắc rối, nhưng chỉ khi tôi phải kiểm tra IE9.

+0

Tôi cũng đã thấy IE9 giữ khóa trên Dancer đang chạy trong Plack với HTTP :: Server :: Simple. Giải pháp tạm thời của tôi là sử dụng Firefox và giải pháp lâu dài của tôi là sử dụng một máy chủ web cao cấp hơn với Plack tại một số điểm. Dancer cung cấp tài liệu về cấu hình cho các máy chủ web khác nhau như nginx - tương tự như giải pháp @wes. –

+0

@wes tôi đặt vũ công đằng sau apache và tất cả dường như là tốt. Cảm ơn –

Các vấn đề liên quan