18

私は数ヶ月前にそのような質問をしました。問題を特定するために、新しいアプローチを試みました。空のファイルをサーバーに置きました。

ファイル名は「foobar.php」です。その内容は次のとおりです。

<?php
echo "hello world";

しかし、 example.com/foobar.phpに入ろうとすると、

DNS 203ミリ
秒 接続 3.33 秒
送信 0 ミリ秒
最初のバイトまでの時間 17.35 秒
受信 1 ミリ秒 総ロード時間 20.88 秒

次に、「foobar.txt」という別のファイルを置きます。その内容は次のとおりです。

hello world<br/>

foob​​ar.txtの読み込み時間は約 0.2 秒です。

この Web サイトは共有ホスティング内にあるため、ルート Linux アクセスを取得できません。サイトが遅くなる原因を突き止めようとしています。

  • これらの結果が得られると、私のサイトには 60 人の訪問者がいます。また、アクティブなときに AJAX リクエストを送信します。それらがアクティブな場合、ほぼ 3 秒ごとに AJAX 要求を送信します。
  • 通常、私の Web サイトには 1 秒あたり 5 ~ 20 のリクエストがあります。
  • 私のホスティング プロバイダーによると、CPU の過負荷は発生せず、一般的には非常に低いとのことです。
  • ホスティング会社にApacheの制限を尋ねました。共有サーバー全体で次の値を取得します。

MaxClients 300
MaxRequestsPerChild 4000
ThreadsPerChild 25

  • example.com/mybigpage.phpexample.com/foobar.phpのページがほぼ同時に開かれます。
  • ページに txt、jpeg、またはその他の拡張子が含まれている場合、それらはすぐに開きます。拡張子が php の場合、開くのが非常に遅くなります。
  • CakePHP はセッションファイルを「/httpdocs/app/tmp/sessions」フォルダに保存します。セッション ファイルは、作成から 2 時間後に削除されます。現在、そのフォルダー内には 3653 個のファイルがあります。最も古いファイルは 2.5 時間前に作成されます。
  • 私の構成では、PHP ハンドラーは Apache モジュール mod_php です。

新しい編集: ホスティング会社と話しました。そして、「foobar.php」が 20 秒近くで開かれることを伝えました。そのファイルにはコードがまったくありませんが。彼らは、同じサーバーを使用している他のウェブサイトに「foobar.php」を配置したと私に言いました。「othersite.com/foobar.php」も試してみました。すぐに開きました。しかし、「mysite.com/foobar.php」は 15 秒近くで開きました。何がこの振る舞いをするでしょうか?他のサイトと同じ PHP 構成を使用していますが、それらはすぐに開きます。.htaccess ルールが原因でしょうか? それとも他のもの?

新しい Edit2: 私のプロバイダーは、サーバー内に「apd.so」ファイルが存在しないと私に言いました。APDが使えないようです。

ボトルネックを見つけるには何を探す必要がありますか?
私のサイトを制限するものは何ですか?


追加データ: phpinfo から、次の情報を取得します。

'./configure' '--prefix=/usr/local/lsws/lsphp5' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target= x86_64-redhat-linux-gnu' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir =/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '- -cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc /php.dd' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-curl' '-- with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv ' '--with-jpeg-dir=/usr' '--with-openssl' '--with-libexpat-dir=/usr/lib64' '--with-pcre-regex=/usr' '--with -zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' ' --enable-sysvshm' '--enable-sysvmsg' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-shmop' '--enable-calendar' '--with-libxml-dir=/usr' '--with-mysql' '--with-mysqli' '--with-gd' '--イネーブルドム' '--disable-dba' '--without-unixODBC' '--enable-xmlreader' '--enable-xmlwriter' '--with-mcrypt' '--enable-mbstring' '--with-litespeed' '- -enable-soap' '--with-xsl' '--with-pdo-mysql' '--with-pdo-sqlite' '--enable-sqlite-utf8' '--with-pspell' '--with -sqlite=shared' '--with-xmlrpc' '--with-mhash' '--enable-pdo' '--with-imap' '--with-imap-ssl' '--without-suhosin' ' --with-tidy''--enable-zip''--enable-inline-optimization''--enable-gd-native-ttf''--enable-bcmath'--enable-soap' '--with-xsl' '--with-pdo-mysql' '--with-pdo-sqlite' '--enable-sqlite-utf8' '--with-pspell' '-- with-sqlite=shared' '--with-xmlrpc' '--with-mhash' '--enable-pdo' '--with-imap' '--with-imap-ssl' '--without-suhosin' '--with-tidy' '--enable-zip' '--enable-inline-optimization' '--enable-gd-native-ttf' '--enable-bcmath'--enable-soap' '--with-xsl' '--with-pdo-mysql' '--with-pdo-sqlite' '--enable-sqlite-utf8' '--with-pspell' '-- with-sqlite=shared' '--with-xmlrpc' '--with-mhash' '--enable-pdo' '--with-imap' '--with-imap-ssl' '--without-suhosin' '--with-tidy' '--enable-zip' '--enable-inline-optimization' '--enable-gd-native-ttf' '--enable-bcmath'--enable-inline-optimization'' --enable-gd-native-ttf''--enable-bcmath'--enable-inline-optimization'' --enable-gd-native-ttf''--enable-bcmath'

4

4 に答える 4

4

この問題が発生した時点で、いくつかのクライアントが 3 秒ごとに AJAX 要求を実行していると書いています。これにより、サーバーで使用可能なすべての PHP ワーカーがこれらの AJAX 要求によってブロックされる可能性があります。Web サーバーはリクエストを受け取り/foobar.php、PHP ワーカーがリクエストを処理できるようになるまで待機する必要があります。

したがって、問題の可能な解決策には次のものがあります(AJAXが必要とするものをより具体的にすることなく、これを一般的に保つ必要があります):

  • AJAX リクエストを静的ファイルに送信する
  • (AJAX)リクエストが終了したときにPHPが実際に接続を閉じることを確認します。たとえば、 (これでは不十分かもしれませんが、接続処理に関するPHPマニュアルheader("Connection: close");のコメントを確認してください)
  • 行われる AJAX リクエストの数を減らします (プロバイダーと協力して計算した数まで)

一般に、これを解決するにはプロバイダーの助けが必要です。プロバイダーが PHP を提供するためにどのメソッドを使用するかを記述していません。たとえば、fpm には、process.max非常に多くの PHP ファイルを並行して処理する Web サーバーの能力を制限できるという設定があります。

于 2012-12-30T14:22:04.073 に答える
3

プロバイダーの協力がなければ、何が問題なのかを知る機会はありません。

セッションのディスクIOの問題のようなものだと思います。

もう 1 つの興味深い点は、プロバイダーが次のように使用し ていることです。

プロバイダーが mjk のアドバイスに従っている場合は、単にプロバイダーを変更する必要があります。彼らは自分たちをコントロールできていないようです。

于 2012-12-29T13:37:23.277 に答える
2

同じ空のPHPファイルが別のサイトに移動されたときにすぐに読み込まれる場合、その時点で非が読み込まれているため、フレームワークまたは含まれているファイルが原因である可能性はありません。

これは、php側またはApache側の構成の問題であるか、書き換えルールが原因である可能性があります。次のことを試すことをお勧めします。

1.)サイトごとのPHP設定が許可されている場合は、ホスティング会社に特定のphp.iniの名前を別の名前に変更するよう依頼し、別のサイトからphp.iniをコピーして、Apacheを再起動します。Windowsでも同様の問題が発生しましたが、これはphp.iniでのファイルアクセスの問題が原因であったため、これが役立つ可能性があります。

2.)一時的に.htaccessの名前を変更し、phpファイルに再度アクセスします。ロード時間が短くなると、誤った書き換え条件またはその他のディレクティブが発生します。.htaccessの内容も投稿していただけますか?

于 2012-12-29T12:17:47.143 に答える