EMRクラスタ上のcapacity_schedulerのACL実装http://click.aliyun.com/m/20978/


要約: phpプロセスデバッグでlstatシステム呼び出しが大量に発生し、realpath_をコンパイルすることによってturboモジュール、オープン同時にopen_をサポートbasedirとrealpath_cache_size,php性能の最適化
生産システムアーキテクチャ図
プログラムとデータは約500 Gで、1台のECSに保存され、NFS共有を開いていくつかのNginxサーバに読み書きを行い、共有セッションも含めてNFSパーティションに保存される.データは次のステップでOSSに移行する予定である.
システム動作中にNFSの読み書き効率が低く,NFSを調整するキャッシュパラメータも改善されていないことが分かった.例えばphpスローログを記録することで、大量のsession_を見ることができます.startの実行が遅い:sessionストレージ方式をファイルからredisに変更し、解決します.
GoogleでNFS+sessionを検索startの過程で、外国人の神貼を見つけた.
http://php.webtutor.pl/en/2011/06/02/running-php-on-nfs-huge-performance-problems-and-one-simple-solution/
NFSの下でphpの性能問題について述べた:phpプログラムでは大量のrequireとincludeを使用する必要があるため、大量のlstatシステム呼び出しが発生し、プログラムの性能を大幅に低下させる.明確には述べられていませんが、NFSではこの問題が明らかになると理解しています.すぐに本番システムでstraceコマンドを使用して統計分析を行います.
#  strace  php-fpm   lstat    
#pgrep  :
#-n    (     )             
#-o    (     )             
strace -c -p $(pgrep -n php-fpm)

やはりlstatが1位を占めているのを見ました(現在、生産システムがチューニングされているため、結果をキャプチャすることはできません.上記のドキュメントを参照してください)
通常、この問題をチューニングするにはphp.ini(またはphp-fpm.conf)でrealpath_を変更することができます.cache_sizeとrealpath_cache_ttlこの2つのパラメータでいいです.
realpath_cache_size:phpプロセスで使用される実際のパスバッファのサイズ、デフォルト16 K realpath_cache_ttl:キャッシュ時間、デフォルト120秒
以上の2つのパラメータを適切に大きくするとlstatの呼び出し回数を減らすことができます.
しかしphpがopen_を設定するとbasedirまたはsafeを開いたmodeの場合、この2つのパラメータは有効になりません. http://bugs.php.net/bug.php?id=52312 open_basedirの役割はphpの読み取りディレクトリを制限することであり、必要なセキュリティ設定であり、もちろんキャンセルすることはできません.両者を同時に開くには、大神のrealpathを導入しなければならない.turboモジュールです.githubアドレス:https://github.com/Whissi/realpath_turbo
コンパイルインストール:
cd ~
wget https://github.com/Whissi/realpath_turbo/archive/master.zip -O realpath_turbo.zip
unzip realpath_turbo.zip 
cd realpath_turbo-master/
/usr/local/php_5.3.29/bin/phpize ./configure --with-php-config=/usr/local/php_5.3.29/bin/php-config make make test NO_INTERACTION=1 make install echo extension=realpath_turbo.so >> /usr/local/php_5.3.29/lib/php.ini

コンパイルエラーが発生しました.
/root/realpath_turbo-master/realpath_turbo.c: In function ‘zm_activate_realpath_turbo’:
/root/realpath_turbo-master/realpath_turbo.c:43: warning: initialization makes pointer from integer without a cast
/root/realpath_turbo-master/realpath_turbo.c:76: error: invalid type argument of ‘unary *’ (have ‘int’)
make: *** [realpath_turbo.lo] Error 1

realpath_を開くturbo.c、74-83行を除いて、この段落はsafeが開いたかどうかを判断します.mode、コンパイルを開いたら通らない.咲いてないからmode、直接削除します.
php-fpmを使用しているため、モジュールの構成をphp-fpm.confに配置します.
php_value[open_basedir] = ""
php_value[realpath_turbo.disable_dangerous_functions] = 1
php_value[realpath_turbo.open_basedir] = "/home1/wwwroot/public_html:/home1/tmp/:/home1/log/"
php_value[realpath_cache_size] = 20m
php_value[realpath_cache_ttl] = 3600
``
  php-fpm, phpinfo   realpath_turbo      。

    strace,    lstat          ,    。
![strace2](https://yqfile.alicdn.com/2a3d49fefebf5a456db8262090e39eab80dfc36c.png)

クリックしてリンクを開く