0

WAMP (Apache 2.2.8、php 5.2.6) で Windows 2008 Server を実行していますが、このエラーが発生します...

PHP 警告: file_get_contents( http://www.example.com/portal/ ) [function.file-get-contents]: ストリームを開くことができませんでした: システムに十分なバッファ スペースがないか、ソケットに対する操作を実行できませんでした。キューがいっぱいだったので。

誰かが似たようなことを経験しましたか?

ありがとうございました!

4

1 に答える 1

1

このエラー メッセージは、Winsock エラーに関連しておりWSAENOBUFS、実際には SQL Server ではなく Windows から直接表示されますが、2 つの根本的な原因がよく理解されています。しかし、おそらく、両方の根本原因を説明し、両方の解決策を提供する単一の情報源がないため、今日でも人々は困惑しています。このエラーが表示される可能性のある 2 つの一般的な状況と、それぞれの簡単な解決策について説明します。 OS が TCP バッファのメモリを使い果たしている

強力なクライアント マシン、特に大量の RAM を搭載したマシンで x86 バージョンの Windows を実行している場合、c:\boot.ini ファイルで /PAE スイッチを使用して、そのマシン上のアプリケーションが全範囲に対応できるようにします。メモリの。アプリケーションにより多くのメモリを提供するためによく使用されるもう 1 つのスイッチ/3gbは、boot.ini ファイルのスイッチです。この 2 つを組み合わせると問題が発生します。この/3gbスイッチは、OS が使用できるメモリの量を減らすことで、アプリケーションにより多くのメモリを提供します。多くの TCP 接続を開くなど、アプリケーションが多くの OS リソースを必要とする強力なマシンで使用すると、TCP バッファなどのリソースのために OS のメモリが不足する可能性があります。その場合、Winsock はエラーをスローしますWSAENOBUFS

解決策/3gb:からスイッチを取り外しC:\boot.iniます。この場合の根本的な問題は、OS のメモリ プレッシャであるため、/3gbスイッチを削除すると、OS により多くのメモリが割り当てられ、この問題が軽減されます。OS が使用可能な TCP「エフェメラル」ポートを使い果たす

クライアント マシンが多数の TCP 接続を開き、Windows Server 2003、Windows XP、またはそれ以前のバージョンの Windows を実行している場合、TCP の「エフェメラル」ポートが不足する可能性があります。Windows Server 2003、Windows XP、およびそれ以前のバージョンでは、Windows は使用可能な一時ポートの数をマシン全体で約 5000 に制限しています。接続プーリングを使用しないアプリケーションでは、この問題が発生することが特に一般的です。

解決策MaxUserPort: より多くのエフェメラル ポートを使用できるようにするには、 レジストリ キーの作成方法について説明している次の KB の指示に従ってください: http://support.microsoft.com/kb/196271

于 2013-10-24T08:58:58.377 に答える