まず、これが疑わしい設定であることはわかっていますが、fastcgiまたはfcgidのパフォーマンスにより、試してみる必要があります。問題は、接続が閉じられないために負荷テストが完了しないことです。40の同時接続のみにプッシュすると、状況は南に進みます。接続は数分間確立された状態になります。
netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c
1 CLOSE_WAIT
72 ESTABLISHED
8 LISTEN
次に、数分後、それらはCLOSE_WAITとESTABLISHEDの組み合わせに分割されます。
netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c
41 CLOSE_WAIT
32 ESTABLISHED
8 LISTEN
そしてさらに10分後、これは変わっていません。これらは、クライアントからWebサーバー、およびWebサーバーからmysqlサーバーの組み合わせです。mysql接続を確立しないphpページに対してテストすると、すべてが正常に機能します。
PHPをカスタムコンパイルし(以下の構成)、apt-get(Ubuntu 10.04)を介してapache-mpm-workerをインストールしました。mysql、mysqli、およびpdoモジュール用にmsyql_configとmysqlndの両方を使用してPHPをコンパイルしてみました。これは単に、醜い頭を育てている非スレッドセーフなライブラリでしょうか?
./configure --prefix=/usr/local --with-apxs2=/usr/bin/apxs2 --disable-cgi --with-layout=GNU --with-config-file-path=/etc/php5/apache2 --with-config-file-scan-dir=/etc/php5/apache2/conf.d --disable-ipv6 --without-kerberos --with-pcre-regex=/usr --with-zlib --with-zlib-dir=/usr --enable-bcmath --with-bz2 --enable-calendar --enable-ctype --with-curl=shared,/usr --without-qdbm --without-gdbm --with-db4 --with-libxml-dir=/usr --enable-exif --disable-ftp --with-gd=shared,/usr --enable-gd-native-ttf --with-gmp=shared,/usr --with-jpeg-dir=shared,/usr --with-xpm-dir=shared,/usr/X11R6 --with-png-dir=shared,/usr --with-freetype-dir=shared,/usr --with-gettext --with-mhash=shared,/usr --with-ldap=shared,/usr --with-ldap-sasl=/usr --with-mcrypt=shared,/usr --enable-mbstring --without-msql --without-mssql --with-pspell=shared,/usr --without-mm --disable-shmop --enable-soap --enable-sockets --with-regex=php --disable-sysvshm --disable-wddx --with-xmlrpc=shared --with-iconv --with-xsl=shared,/usr --enable-zip --with-pear=/usr/share/php --with-tsrm-pthreads --enable-maintainer-zts --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=myslqnd --with-libdir=lib64