JIT+Opcache如何配置才能達到性能最優

首先打開php.ini文件,進行配置

1、OPcache配置

; 啟用OPcache
opcache.enable=1; CLI環境下啟用OPcache(按需配置)
opcache.enable_cli=0; 預加載腳本(PHP 7.4+,加速常用類)
; opcache.preload=/path/to/preload.php; 分配內存大小(根據項目大小調整,建議128M-512M)
opcache.memory_consumption=256; 最大緩存文件數(建議設置為項目文件數+冗余)
opcache.max_accelerated_files=10000; 內存"浪費"達到此百分比會執行重啟
opcache.max_wasted_percentage=10; 不檢查文件修改時間(生產環境推薦關閉),更新代碼時,重啟php-fpm
opcache.validate_timestamps=0; 每隔多少秒檢查文件更新(若開啟驗證,建議較大值)
opcache.revalidate_freq=60; 優化字符串存儲,(約16MB)適合中型應用
opcache.interned_strings_buffer=16; 快速關閉機制
opcache.fast_shutdown=1; 文件緩存路徑(為空表示僅內存緩存)
opcache.file_cache=/tmp/opcache; 啟用文件緩存(生產環境推薦)
opcache.file_cache_only=0; 優化級別(0-7,推薦0)
opcache.optimization_level=0x7FFFBFFF; 防止腳本重復緩存
opcache.dups_fix=0; 記錄緩存命中率(調試用)
opcache.record_warnings=0; 啟用保護模式
opcache.protect_memory=0; 鎖定內存(避免交換)
opcache.lockfile_path=/tmp; 高級優化
opcache.opt_debug_level=0
opcache.enable_file_override=1
opcache.preload=/path/to/preload.php  ; 預加載腳本(可選)
opcache.huge_code_pages=1             ; 啟用大內存頁(Linux)

2、JIT配置

; 啟用JIT并分配緩沖區(建議100M以上)
opcache.jit_buffer_size=100M; JIT模式
opcache.jit=1255 ; JIT 模式(1255 是推薦值); 關閉調試
opcache.jit_debug=0; 生產環境關閉分析          
opcache.jit_profiling=0               

opcache.jit模式講解:

2.1?數字組合模式

opcache.jit?的值通常由 4 位數字組成(如?1255),每位數字代表不同的編譯策略:

第一位:是否使用 AVX 指令(需 CPU 支持)

  • 0:禁用 AVX 指令
  • 1:啟用 AVX 指令(推薦)

第二位:寄存器分配策略

  • 0:禁用寄存器分配
  • 1:局部(Block 級)分配
  • 2:全局(Function 級)分配(推薦)

第三位:JIT 觸發策略

  • 0:腳本加載時編譯所有代碼
  • 1:函數首次執行時編譯
  • 2:基于調用頻率編譯(推薦結合?opcache.prof_threshold?使用)
  • 3:函數執行超過閾值(opcache.jit_hot_func)后編譯
  • 4:通過?@jit?注釋手動觸發編譯
  • 5:基于循環/返回的熱點追蹤(推薦)

第四位:優化級別

  • 0:禁用優化
  • 1:基礎優化(如跳轉優化)
  • 5:最高優化(腳本級類型推斷、SSA 優化等,推薦)

2.2?關鍵字模式

PHP 8.0+ 支持簡寫關鍵字:

  • disable:禁用 JIT(默認值)
  • tracing:追蹤模式(積極優化循環和熱點代碼)
  • function:函數級優化(平衡性能與資源消耗)
  • on:保守策略(僅優化高頻代碼片段)

2.3?推薦配置

最佳性能模式:1255 #計算密集型任務(如數學運算、循環處理)

通用推薦模式:tracing #Web 服務、高并發場景

保守模式:function?或?on #資源受限環境或對啟動速度敏感的應用

3、檢查opcache是否起作用

執行如下命令

php -r 'print_r(opcache_get_status());'

輸出值如下

Array
([opcache_enabled] => 1 // OPcache 是否啟用[cache_full] =>  // 緩存是否已滿[restart_pending] =>  // 是否有重啟掛起(如手動觸發重啟)[restart_in_progress] =>  // 是否正在重啟[memory_usage] => Array // 內存使用情況([used_memory] => 39923984 //已使用的內存量(字節)[free_memory] => 228511472 //剩余可用內存(字節)[wasted_memory] => 0 //因碎片化等原因浪費的內存(字節),若 wasted_memory 過高,嘗試調整 opcache.fast_shutdown[current_wasted_percentage] => 0 //浪費內存占總內存的百分比(理想應接近 0))[interned_strings_usage] => Array // 內部字符串緩存信息(PHP 7+)([buffer_size] => 25165360 //字符串緩存區總大小(字節)[used_memory] => 508264 //已使用的內存量[free_memory] => 24657096 //剩余可用內存[number_of_strings] => 10625 //緩存的字符串數量)[opcache_statistics] => Array // 統計信息(含命中率)([num_cached_scripts] => 0 //已緩存的腳本數量,接近 max_cached_keys 時可能需要調整配置。[num_cached_keys] => 0 //當前緩存的腳本數量[max_cached_keys] => 130987 //最大可緩存鍵數(由 opcache.max_accelerated_files 定義)[hits] => 0 //命中次數[start_time] => 1747137944 //OPcache 啟動時間戳(秒)[last_restart_time] => 0 //最后一次重啟時間戳(未重啟時為 0)[oom_restarts] => 0 //因內存不足(OOM)觸發的重啟次數[hash_restarts] => 0 //因哈希沖突觸發的重啟次數[manual_restarts] => 0 //手動調用 opcache_reset() 的重啟次數。[misses] => 0 //未命中次數[blacklist_misses] => 0[blacklist_miss_ratio] => 0[opcache_hit_rate] => 0 //越高越好(理想值 > 95%,低于 80% 需檢查配置或代碼更新頻率)。)[scripts] => Array (// 已緩存的腳本詳情["/var/www/index.php"] => Array ("full_path" => "/var/www/index.php",//腳本的完整路徑"hits" => 10,//該腳本的緩存命中次數"memory_consumption" => 32768,//該腳本占用的內存量(字節)"last_used" => "Tue May 14 10:00:00 2024" //最后一次訪問時間(如 "Tue May 14 10:00:00 2024"))
)[jit] => Array([enabled] => 1[on] => 1[kind] => 0[opt_level] => 5[opt_flags] => 6[buffer_size] => 134217712[buffer_free] => 134215280))

4、緩存清理

# 每天凌晨清理緩存
0 3 * * * /usr/bin/php /path/to/your/project/think optimize:clear >> /dev/null 2>&1# 每周重建OPcache
0 4 * * 1 /usr/bin/systemctl restart php-fpm >> /dev/null 2>&1#通過cronjob每天低峰期重啟PHP-FPM:
0 4 * * * /bin/systemctl restart php-fpm

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79675.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79675.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79675.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python訓練打卡Day23

機器學習管道 pipeline 基礎概念 pipeline在機器學習領域可以翻譯為“管道”,也可以翻譯為“流水線”,是機器學習中一個重要的概念。 在機器學習中,通常會按照一定的順序對數據進行預處理、特征提取、模型訓練和模型評估等步驟,以…

GPU SIMT架構的極限壓榨:PTX匯編指令級并行優化實踐

點擊 “AladdinEdu,同學們用得起的【H卡】算力平臺”,H卡級別算力,按量計費,靈活彈性,頂級配置,學生專屬優惠。 一、SIMT架構的調度哲學與寄存器平衡藝術 1.1 Warp Scheduler的調度策略解構 在NVIDIA GPU…

HarmonyOS 【詩韻悠然】AI古詩詞賞析APP開發實戰從零到一系列(二、項目準備與后臺服務搭建)

在開發一款面向HarmonyOS平臺的應用程序——【詩韻悠然】AI古詩詞賞析APP時,選擇了流行Go語言作為后端開發語言,并使用了go-zero微服務框架來搭建服務接口。本文將詳細介紹項目準備和后臺服務搭建的過程,幫助大家更好地理解和掌握go-zero框架…

QT5.14安裝以及新建基礎項目

進入qt中文網站:Qt | 軟件開發全周期的各階段工具 額,考慮新手可能還是找不到,我就分享一下我下載的的吧 通過網盤分享的文件:qt-opensource-windows-x86-5.14.2.exe 鏈接:https://pan.baidu.com/s/1yQTRp-b_ISje5B3UWb7Apw?pw…

深入解析 I/O 模型:原理、區別與 Java 實踐

一、I/O 模型的核心概念 I/O 操作的本質是數據在用戶空間(應用程序內存)和內核空間(操作系統內核內存)之間的傳輸。根據數據準備與拷貝階段的處理方式不同,I/O 模型可分為以下五類: 阻塞 I/O(…

EMQX v5.0通過連接器和規則同步數據

1 概述 EMQX數據集成功能,幫助用戶將所有的業務數據無需額外編寫代碼即可快速完成處理與分發。 數據集成能力由連接器和規則兩部分組成,用戶可以使用數據橋接或 MQTT 主題來接入數據,使用規則處理數據后,再通過數據橋接將數據發…

重構門店網絡:從“打補丁“到“造地基“的跨越

您是否遇到過這樣的窘境? 新店開張要等一周,就為裝根網線; 偏遠地區門店三天兩頭斷網,顧客排長隊卻結不了賬; 總部想看實時數據,結果收到一堆亂碼報錯; 總部ERP系統升級,2000家門…

PH熱榜 | 2025-05-13

1. FirstQuadrant 標語:通過以人為本的人工智能來最大化B2B銷售 介紹:銷售人工智能,幫助創始人和收益團隊提高效率,保持組織有序,并促成更多交易。它通過簡化銷售幕后工作,確保每個細節都不會遺漏。 產品…

【即插即用漲點模塊】【上采樣】CARAFE內容感知特征重組:語義信息與高效計算兩不誤【附源碼】

《------往期經典推薦------》 一、AI應用軟件開發實戰專欄【鏈接】 項目名稱項目名稱1.【人臉識別與管理系統開發】2.【車牌識別與自動收費管理系統開發】3.【手勢識別系統開發】4.【人臉面部活體檢測系統開發】5.【圖片風格快速遷移軟件開發】6.【人臉表表情識別系統】7.【…

esp32硬件支持AT指令

步驟1:下載AT固件 從樂鑫官網或Git鑫GitHub倉庫(https://github.com/espressif/esp-at)獲取對應ESP32型號的AT固件(如ESP32-AT.bin)。 步驟2:安裝燒錄工具 使用 esptool.py(命令行工具&#…

【神經網絡與深度學習】局部最小值和全局最小值

引言 在機器學習和優化問題中,目標函數的優化通常是核心任務。優化過程可能會產生局部最小值或全局最小值,而如何區分它們并選擇合適的優化策略,將直接影響模型的性能和穩定性。 在深度學習等復雜優化問題中,尋找全局最小值往往…

鏈表的面試題4之合并有序鏈表

這篇文章我們繼續來講鏈表中很經典的面試題:合并有序鏈表。 目錄 迭代 遞歸 我們首先來看一下這張圖片里面的要求,給你兩個鏈表,要求把他們按照從小到大的方式排列。 這里涉及到幾個問題,首先,我們的頭節點是不是要…

flea-cache使用之Redis哨兵模式接入

Redis哨兵模式接入 1. 參考2. 依賴3. 基礎接入3.1 定義Flea緩存接口3.2 定義抽象Flea緩存類3.3 定義Redis客戶端接口類3.4 定義Redis客戶端命令行3.5 定義哨兵模式Redis客戶端實現類3.6 定義Redis哨兵連接池3.7 定義Redis哨兵配置文件3.8 定義Redis Flea緩存類3.9 定義抽象Flea…

OpenAI for Countries:全球AI基礎設施的“技術基建革命”

2025年5月7日,OpenAI宣布啟動“OpenAI for Countries”計劃,目標是為全球各國構建本土化的AI基礎設施,提供定制化服務。這一計劃被視為其“星際之門”項目的全球化延伸,以技術合作為核心,覆蓋數據中心建設、模型適配與…

Linux精確列出非法 UTF-8 字符的路徑或文件名

Docker構建的時候報錯:failed to solve: Internal: rpc error: code = Internal desc = grpc: error while marshaling: string field contains invalid UTF-8 1、創建一個test.sh文件 find . -print0 | while IFS= read -r -d file;

FFmpeg在Android開發中的核心價值是什么?

FFmpeg 在 Android 開發中的核心價值主要體現在其強大的多媒體處理能力和靈活性上,尤其在音視頻編解碼、流媒體處理及跨平臺兼容性方面具有不可替代的作用。以下是具體分析: --- 1. 強大的音視頻編解碼能力 - 支持廣泛格式:FFmpeg 支持幾乎所…

自我獎勵語言模型:突破人類反饋瓶頸

核心思想 自我獎勵語言模型提出了一種全新的語言模型對齊范式。傳統方法如RLHF或DPO依賴人類反饋數據訓練固定的獎勵模型,這使模型的能力受限于人類標注數據的質量和數量。論文作者認為,要實現超人類能力的AI代理,未來的模型需要突破人類反饋…

5. 動畫/過渡模塊 - 交互式儀表盤

5. 動畫/過渡模塊 - 交互式儀表盤 案例&#xff1a;數據分析儀表盤 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style type"text/css">.dashboard {font-family: Arial…

【前端三劍客】Ajax技術實現前端開發

目錄 一、原生AJAX 1.1AJAX 簡介 1.2XML 簡介 1.3AJAX 的特點 1.3.1AJAX 的優點 1.3.2AJAX 的缺點 1.4AJAX 的使用 1.4.1核心對象 1.4.2使用步驟 1.4.3解決IE 緩存問題 1.4.4AJAX 請求狀態 二、jQuery 中的AJAX 2.1 get 請求 2.2 post 請求 三、跨域 3.1同源策略…

SQL 索引優化指南:原理、知識點與實踐案例

SQL 索引優化指南&#xff1a;原理、知識點與實踐案例 索引的基本原理 索引是數據庫中用于加速數據檢索的數據結構&#xff0c;類似于書籍的目錄。它通過創建額外的數據結構來存儲部分數據&#xff0c;使得查詢可以快速定位到所需數據而不必掃描整個表。 索引的工作原理 B-…