查看占用資源最多的
ps auxw|head -1;ps auxw|sort -rn -k4|head -50
查看php進程總數
pstree|grep php-fpm
解決過程:
下面我們通過修改配置文件來優化php-fpm,以達到降低內存使用率的目的。
我的php-fpm配置文件在 …/server/php/etc/ 目錄下,進入該目錄。
先備份一下原配置文件:
cp php-fpm.conf php-fpm.conf.bak
具體配置參數如下:
pm.max_children = 100改為:pm.max_children = 25
pm.start_servers = 20改為pm.start_servers = 5
pm.min_spare_servers = 5改為pm.min_spare_servers = 2
pm.max_spare_servers = 35改為pm.max_spare_servers = 10
重啟服務器:
reboot
重啟后可以發現內存使用率相比于之前降低了。
注:
php-fpm.conf中參數作用的說明:
pm.max_children:靜態方式下開啟的php-fpm進程數量。
pm.start_servers:動態方式下的起始php-fpm進程數量。
pm.min_spare_servers:動態方式下的最小php-fpm進程數。
pm.max_spare_servers:動態方式下的最大php-fpm進程數量。
進行上述設置時,我將php-fpm的執行方式設置成了動態:
pm = dynamic
php-fpm有兩種執行方式:
一種是Static靜態,另一種是Dynamic動態。如果設置成靜態,那么只有 pm.max_children 這個參數起作用。如果設置成動態則有 pm.start_servers 、 pm.min_spare_servers 和 pm.max_spare_servers 這三個參數起作用。設置成動態后,當php-fpm啟動時會按照 pm.start_servers 的參數設置啟動相應個數的進程,之后php-fpm的進程數量將維持在 pm.min_spare_servers 和 pm.max_spare_servers 指定的個數之間。
查看進程數
ps -ef|grep httpd|wc -l
查看了連接數和當前的連接數,分別是
netstat -ant | grep $ip:80 | wc -l
netstat -ant | grep $ip:80 | grep EST | wc -l
查看httpd使用的模式
`httpd -l `
計算httpd占用內存的平均數:
ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}'
配置最大連接數
vim /etc/httpd/conf/httpd.conf
在最后加上
<IfModule prefork.c>
StartServers 50
MinSpareServers 50
MaxSpareServers 100
ServerLimit 3000
MaxClients 3000
MaxRequestsPerChild 10000
</IfModule>
--------------------------------------------------------------------
<IfModule mpm_prefork_module>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
<IfModule mpm_prefork_module>
StartServers 5 #推薦設置:小=默認 中=20~50 大=50~100
MinSpareServers 5 #推薦設置:與StartServers保持一致
MaxSpareServers 10 #推薦設置:小=20 中=30~80 大=80~120
MaxClients 150 #推薦設置:小=500 中=500~1500 大型=1500~3000
MaxRequestsPerChild 0 #推薦設置:小=10000 中或大=10000~500000
(此外,還需額外設置ServerLimit參數,該參數最好與MaxClients的值保持一致。)
</IfModule>
# StartServers: 數量的服務器進程開始
# MinSpareServers: 最小數量的服務器進程,保存備用
# MaxSpareServers: 最大數量的服務器進程,保存備用
# MaxRequestWorkers: 最大數量的服務器進程允許開始
# MaxConnectionsPerChild: 最大連接數的一個服務器進程服務
說明
* ServerLimit 256 #服務器數量,即進程數的上限,一般配置兩個值相同
* MaxClients 256 #這個值比較關鍵,能同時連接客戶端數量的上限
* MaxRequestsPerChild 4000 #這里設置的是,每個進程處理4000個請求,該進程處理完第4000個請求后會自動結束,通過合理配置這個參數,可以避免使用mod_perl和mod_php模塊運行的應用程序引起的內存泄露。在會接收到大量請求的大型服務器中,如果這個參數配置的值太小,就就會頻繁的重復進行進程的建立和結束。因為基于寫時復制的內存共享,共享率會越來越低,最終會導致大部分內存將被持續擠占而不能共享,必須根據實際情況合理設置該值。
##這是工作在work模式下的配置,work模式是多進程和多線程的混合型模式
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
mpm_worker_module
禁止用戶直接訪問WEB網站中的SVN GIT 文件。因為這是不安全的。
<DirectoryMatch .*\.svn|.git|_svn/.*>
RewriteEngine On
RewriteRule ^(.*)(\.svn|.git|_svn)(/.*)$ /index.php [R=301]
</DirectoryMatch>
- 前言
- 阿里圖標庫使用
- LAMP環境安裝
- 數據庫
- MYSQL
- 安裝
- Mysql導出導入
- 修改最大連接數
- Mysql慢查尋
- 查看MYSQL占用空間
- 嚴格模式
- 數據庫模式
- mysql權限
- MongoDB
- Redis
- 服務器
- PHP5.4安裝
- svnmanager
- linux修改端口22
- 打包忽略文件
- 遠程復制文件
- 查看目錄大小
- zendloader
- Apache負載
- Memcache
- svn遠程同步
- 服務器參數調整
- 內存占滿
- PHP調用Java
- Apache重寫
- 禁用selinux
- SFTP 子系統申請已拒絕
- Gitlab
- 硬盤掛載
- gitlab修改密碼
- oneapm
- SVN安裝
- .gitlab-ci.yml
- Nginx重寫 html to php
- 添加到環境變量
- supervisor常駐任務
- .gitlab-ci.yml
- crontab.sh
- PEAR
- java jenkins
- Mongo
- 解決unix:///tmp/supervisor.sock no such file的問題
- 登錄日志
- tail -f
- git remote
- 開發需知
- Sublime開發工具
- 文檔生成工具
- PHP代碼注釋標準
- http網站自動跳轉到https
- PHP只保留錯誤提示。
- window刷新DNS
- 網站慢
- Centos安全
- 臨時代碼
- SVNHOOK
- mariadb
- git
- gitlab-runner
- Sublime3設置注釋
- Vue開發
- 安裝
- v-cloak
- 錯誤處理
- failed to connect 443
- JavaScriptURL請求亂碼
- 內容管理系統
- WordPress
- 支付相關
- 銀聯
- Angularjs
- 安裝環境
- 報錯處理
- centos7在upgrade的時候顯示:Delta RPMs disabled....詳見內容?
- yum-complete-transaction command not find
- hadowsocks
- vpn
- Laravel
- 安裝
- ngnix-config
- 使用私有git的composer
- Crontab防止多次執行
- JS
- mui storage
- RTMP