摘要:另外,可以在腳本的最后調用輸出當前腳本小號的最大內存量。根據分配的內存總量來估算進程數。該擴展用于緩存操作碼。默認情況下,駐留的字符串會隔離在各個進程中。檢查腳本的內容是否有變化。在腳本末尾可以叫上獲得真實的路徑緩存使用大小。
php.ini文件
內存有這么一個工具,可以檢查ini文件是否使用了安全方面的最佳實踐
composer require psecio/iniscan htps://github.com/psecio/iniscan
php.ini中的memory_limit設定單個PHP進程可以使用的系統內存最大值。
一共能分配給PHP多少內存?
512MB是絕對足夠的。但是還是要看具體情況。
單個PHP進程平均消耗多少內存?
可以在命令行中執行top命令看查看運行中的進程的實時統計數據。
另外,可以在PHP腳本的最后調用memory_get_peak_usage()輸出當前腳本小號的最大內存量。
能負擔起多少個PHP-FPM進程?
平均每個php進程要消耗15MB內存。根據分配的內存總量memory_limit來估算進程數。
OPcache該擴展用于緩存操作碼。
先來分析每次HTTP請求時通常是如何處理PHP腳本的。
首先,nginx把HTTP請求轉發給PHP-FPM,PHP-FPM再把請求交給某個PHP子進程處理。PHP進程找到相應的php腳本,讀取腳本,把php腳本編譯成操作碼,然后執行編譯得到的操作碼,生成響應,發給nginx。
我們可以緩存編譯php腳本得到的操作碼,直接從緩存中讀取并執行編譯好的操作碼。
我的php.ini中opcache的配置
opcache.memory_consumption = 64 opcache.interned_strings_buffer = 16 opcache.max_accelerated_files = 4000 opcache.validate_timestamps = 1 opcache.revalidate_freq = 0 opcache.fast_shutdown = 1
opcache.memory_consumption = 64
為緩存分配的內存量。根據應用大小來決定。
opcache.interned_strings_buffer = 16
用來存儲駐留字符串的內存量。
什么是駐留字符串?PHP解釋器在背后會找到相同字符串的多個實例,把這個字符串保存在內存中,如果再次使用相同的字符串,php解釋器會使用指針。默認情況下,php駐留的字符串會隔離在各個php進程中。
這個設置能讓php-fpm進程池中所有進程把駐留字符串存儲到共享的緩沖區中,以便在php-fpm進程池中的多個進程之間引用駐留字符串。
opcache.max_accelerated_files = 4000
操作碼緩存中最多能存儲的php腳本個數,一定要比應用中文件數量大。
opcache.validate_timestamps = 1
檢查php腳本的內容是否有變化。值為0則不檢查。
文件上傳file_uploads = 1 upload_max_filesize = 10M max_file_uploads = 3
最長執行時間在配置上傳非常大的文件時,對nginx的client_max_body_size也要修改
max_execution_time = 5 // s
也可以使用set_time_limit()來覆蓋
處理會話php的會話處理程序會把會話數據存儲在硬盤中。其實可以使用memcached或redis存儲在內存中。
安裝連接memcached的PECL擴展來使用memcahced
http://pecl.php.net/package/memcached
修改配置
session.save_handler = "memcached" session.save_path = "127.0.0.2:11211"緩沖輸出
緩沖輸出的目的:在較少的塊中發送較多的數據
output_buffering = 4096 implicit_flush = false
確保輸出大小是4或8的倍數
真實路徑緩存PHP會緩存應用使用的文件路徑,這樣每次包含或倒入文件時就不需要不斷搜索路徑了。
這個緩存叫真實路徑緩存。
realpath_cache_size = 64k
在腳本末尾可以叫上print_r(realpath_cache_size())獲得真實的路徑緩存使用大小。
參考
Modern PHP
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21667.html
摘要:為了一探究竟,于是開啟了這次應用性能調優之旅。使用即時編譯器和都能輕輕松松的讓你的應用程序在不用做任何修改的情況下,直接提高或者更高的性能。 這是一份事后的總結。在經歷了調優過程踩的很多坑之后,我們最終完善并實施了初步的性能測試方案,通過真實的測試數據歸納出了 Laravel 開發過程中的一些實踐技巧。 0x00 源起 最近有同事反饋 Laravel 寫的應用程序響應有點慢、20幾個并...
摘要:熟悉編程,對于網絡模型有一定的認知,熟悉多路復用技術。對主從延遲能有效解決。能夠支持對于千萬級流量網站的正常開發維護工作。結束語技術無止境,未來有更多可能。 本文旨在給要學習 PHP 的新手一個大概的認知輪廓,在心里有個學習的結構,有的放矢,避免走太多彎路。大神請忽略。 入門階段 預備知識 1、掌握基本HTML、JS、CSS語法;熟悉 Bootstrap。 參考: https:/...
閱讀 1014·2021-11-22 14:56
閱讀 975·2021-11-11 16:54
閱讀 7553·2021-09-23 11:55
閱讀 3000·2021-09-22 15:57
閱讀 2787·2021-08-27 16:25
閱讀 667·2019-08-30 15:55
閱讀 1657·2019-08-30 15:43
閱讀 1592·2019-08-30 14:23