2013-04-13 6 views
5

Linuxでperlダンサーと遊んでいて、ブラウザがLAN経由で直接サーバーに接続しているといいです。しかし、WAN を介して接続すると、ブラウザはIE9になり、ビジー状態のカーソルが消えないことがあります。GETリクエストを読むとダンサーがランダムにハングします

私はページapxを10回連続してリロードすることでこれを誘発することができます。各リロードの間に秒単位で待っていてもこの問題が発生します。ページ自体は非常に単純で、w3cチェックを渡します。

ダンサーをrootとして実行しても、ポートが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, 

がハングアップし、それが永遠に座っているとき。私ができることは何ですか?

答えて

4

Catalyst devサーバに接続しているIE9を使用してsimilar problemに行きました。 Eric Lawrence(IE Team Lead !?)は、IE9のバックグラウンド接続機能による可能性があると示唆しています。 IE9はバックグラウンドでTCP接続を開き、将来のサーバへのリクエストをスピードアップしますが、これは明らかにシングルスレッドのサーバで問題を引き起こします。ダンサーのデフォルトのdevサーバー(HTTP :: Server :: Simple :: PSGI)、you won't be able to handle IE9を実行している場合。

私はApacheからのプロキシでそれを回避しました。私はIE9をテストしなければなりません。

+0

私は、HTTP9 :: Server :: SimpleのPlackで動作するDancerのIE9ホールドロックも見たことがあります。私の暫定的な解決策はFirefoxを使用することでした。私の長期的な解決策は、ある時点でPlackでより高いレベルのWebサーバーを使用することでした。 Dancerは、@ wesのソリューションと同様に、nginxなどのさまざまなWebサーバーの設定に関するドキュメントを提供しています。 –

+0

@wes私はダンサーをApacheの後ろに置き、すべてがうまくいくようです。ありがとう –

関連する問題