ホームページ  >  記事  >  バックエンド開発  >  高品質ノートがここにあります! PHP7のパフォーマンス最適化について

高品質ノートがここにあります! PHP7のパフォーマンス最適化について

藏色散人
藏色散人転載
2021-09-18 16:12:332580ブラウズ

Opcache

1. Opcache の原理
PHP の通常の実行プロセスは次のとおりです。

リクエスト (nginx、apache、cli など) –> Zend エンジンは .php ファイルを読み取ります –> その辞書と式をスキャンします –> ファイルを解析します –> 実行されるコンピューター コードを作成します ( Opcode) –> ;最後に Opcode を実行–>response return

PHP スクリプトが要求されるたびに、上記の手順が実行されます。PHP ソース コードが変更されない場合、Opcode も変更されません。明らかに、毎回オペコードを再生成する必要はありません。Web のユビキタス キャッシュ メカニズムと組み合わせることで、オペコードをキャッシュできます。将来的には、キャッシュされたオペコードに直接アクセスした方が高速ではないでしょうか? オペコードを有効にした後のフローチャートキャッシュは次のとおりです。

オペコード キャッシュの目的は、コンパイルの繰り返しを回避し、CPU とメモリのオーバーヘッドを削減することです。
2. Opcache 構成
php.ini の下に追加します:

// 加载opcache(需确认已安装opcache拓展)
zend_extension=opcache.so
// 开启opcache
opcache.enable = 1
// OPcache共享内存存储大小,单位MB
opcache.memory_consumption=1024 // 1G
// PHP使用了一种叫做字符串驻留,默认是4MB
opcache.interned_strings_buffer=32
// 这个选项用于控制内存中最多可以缓存多少个PHP文件,这个选项必须得设置得足够大,大于你的项目中的所有PHP文件的总和
opcache.max_accelerated_files=80000
// 设置缓存的过期时间(单位是秒),为0的话每次都要检查
opcache.revalidate_freq=3
// 从字面上理解就是“允许更快速关闭”
opcache.fast_shutdown=1
// CLI环境下,PHP启用OPcache
opcache.enable_cli=1

HugePage

1. HugePage の原則
この機能を有効にすると、PHP7 は独自の TEXT セグメント (実行本体) を Huagepage に「移動」します。以前のテストでは、WordPress での QPS が 2% ~ 3% 増加することが着実に確認できました。
Hugepageとは何かというと、簡単に言うとデフォルトのメモリを4KB単位でページングしており、仮想アドレスとメモリアドレスを変換する必要があり、この変換にはテーブルルックアップが必要になります。プロセスでは、CPU に TLB (Translation Lookaside Buffer) が組み込まれます。仮想ページが小さい場合、テーブル内のエントリの数が多くなり、TLB サイズが制限されているのは明らかです。エントリが多いほど、値は高くなります。 TLB のキャッシュ ミスが発生するため、ラージ メモリ ページを有効にすると、間接的にこの TLB キャッシュ ミスを減らすことができます。詳細な紹介については、Google でよく調べたので詳しくは説明しません。ここでは、有効にする方法を中心に説明しますこの新機能により、パフォーマンスが大幅に向上します。
2. HugePage の構成

$ sudo sysctl vm.nr_hugepages=512 // 切勿越大越好,会长占内存

512 の予約済み巨大ページ メモリを割り当てます:

cat /proc/meminfo  | grep Huge
AnonHugePages:    106496 kB
HugePages_Total:     512
HugePages_Free:      504
HugePages_Rsvd:       27
HugePages_Surp:        0
Hugepagesize:       2048 kB

次に、php.ini:

opcache.huge_code_pages=1

## を追加します。 #Opcache ファイル キャッシュ

1. Opcache ファイル キャッシュの概要opcache を使用して、コンパイルされた PHP ファイルをファイルとして保存し、PHP ソース コードの保護とスクリプトの高速化を実現します。明らかにパフォーマンスが向上します

2. Opcache ファイル キャッシュの設定php.ini:

opcache.file_cache=/tmp
を追加して、PHP が /tmp ディレクトリにあるように、一部の Opcode バイナリ エクスポートをキャッシュします。ファイルは、PHP ライフサイクル全体にわたって存在する可能性があります。

設定後に php-fpm を再起動する必要があります

個人テスト

システム: centOs 7

php バージョン: 7.4
nginx
laravel: 8.5

最適化前

cpu:95%- 96%

メモリ: 2G/16G
10 分 4W 同時実行
障害率: 24%

集計レポート


高品質ノートがここにあります! PHP7のパフォーマンス最適化について

1 秒あたりのトランザクション処理数

![PHP7 パフォーマンスの最適化]
![PHP7 パフォーマンスの最適化に関するメモ]

高品質ノートがここにあります! PHP7のパフォーマンス最適化について

#最適化後 #cpu:20%-40 %

メモリ: 5.8G/16G (ここでは HugePage が 2048 に設定されています)

10 分で 4W の同時実行
障害率: 0%

最初のストレス テスト 集計レポート


高品質ノートがここにあります! PHP7のパフォーマンス最適化について1秒あたりに処理されたトランザクション数

高品質ノートがここにあります! PHP7のパフォーマンス最適化について

2回目のストレステスト集計レポート

高品質ノートがここにあります! PHP7のパフォーマンス最適化について1秒あたりのトランザクションの処理

高品質ノートがここにあります! PHP7のパフォーマンス最適化について推奨学習: 「

PHP7チュートリアル
>>」

以上が高品質ノートがここにあります! PHP7のパフォーマンス最適化についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。