httpd.exe占用cpu 100%解決辦法

httpd.exe是apache的一個進程,有了它我們的網站才正常運行,但最近我發現我的httpd.exe占cpu 100%一直高居不下,下面我來分享一些解決辦法。

網上說了是我們沒有限制apache的並發數與子進行數,後來百度得出下面代碼

編輯httpd.conf

代碼如下

Win32DisableAcceptEx ##加入這行
ThreadsPerChild 250
MaxRequestsPerChild 0

重啓apache就解決了。

MaxRequestsPerChild這個指令設定一個獨立的子進程將能處理的請求數量。在處理“MaxRequestsPerChild 數字”個請求之後,子進程將會被父進程終止,這時候子進程占用的記憶體就會釋放,如果再有訪問請求,父進程會重新産生子進程進行處理。

如果MaxRequestsPerChild缺省設爲0(無限)或較大的數字(例如10000以上)可以使每個子進程處理更多的請求,不會因爲不斷終止、啓動子進程降低訪問效率,但MaxRequestsPerChild設置爲0時,如果占用了200~300M記憶體,即使負載下來時占用的記憶體也不會減少。記憶體較大的伺服器可以設置爲0或較大的數字。記憶體較小的伺服器不妨設置成30、50、100,以防記憶體溢出


另一種解決辦法

如果你以前是沒有問題,突然有問題了而且伺服器安裝了金山毒霸,這個可能是金山毒霸或者升級精靈修改了WINSOCK導致

解決辦法

在win命令行cmd下,輸入以下命令

代碼如下

netsh winsock reset


還有可能碰到一種情況就是否cpu沒有點,記憶體占很高或突然卡死過一會就好了,這個解決辦法可嘗試在httpd.conf加入

代碼如下

<IfModule mpm_winnt.c>
ThreadsPerChild 1000
MaxRequestsPerChild 10000
Win32DisableAcceptEx
</IfModule>

最後上面的辦法解決了不根本的問題,我們可以對apache進行優化,最常用的就是apache緩存優化。

apache緩存分爲兩種緩存模式(mod_disk_cache與mod_mem_cache):

mod_disk_cache

一個基于磁盤的存儲管理模塊。

基于硬盤文件存儲的緩存由mod_disk_cache 模塊實現:

代碼如下


<IfModule mod_cache.c>CacheDefaultExpire 3600
CacheMaxExpire 86400
CacheLastModifiedFactor 0.1
<IfModule mod_disk_cache.c>
CacheRoot /usr/local/apache/cache
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
CacheMaxFileSize 10000000
CacheMinFileSize 1
</IfModule>
</IfModule>

拷貝上面內容到apache 的 httpd.con文件中:

在httpd.conf文件中搜索

代碼如下

#LoadModule cache_module modules/mod_cache.so // 去掉前面的# 號

使用磁盤文件緩存:

代碼如下

#LoadModule disk_cache_module modules/mod_disk_cache.so // 去掉前面的# 號


mod_mem_cache

一個基于記憶體的存儲管理模塊。mod_mem_cache可以被配置爲兩種不同的操作模式:①緩存打開的文件描述符;②在堆(heap)上緩存對象。mod_mem_cache既可以用于緩存本地生成的內容,也可以用于爲反向代理模式下的mod_proxy緩存後端伺服器輸出的內容。

基于記憶體的緩存主要由 mod_mem_cache 模塊實現:

代碼如下


<IfModule mod_cache.c>

<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 4096
MCacheMaxObjectCount 2000
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
</IfModule>
</IfModule>

安裝完成之後,需要搜索

代碼如下

LoadModule cache_module modules/mod_cache.so // 去掉前面的# 號

使用記憶體文件緩存:

代碼如下

#LoadModule mem_cache_module modules/mod_mem_cache.so // 去掉前面的# 號

更多相關文章
  • 因爲用到一個簡單的功能,我們用到了file_get_contents 函數,這樣它把CPU 100%經過分析確實了是它景起了,現在我們來看看引起cpu 100%的解決辦法吧.運行 Nginx.PHP-CGI(php-fpm) Web服務的 Linux 伺服器,突然系統負載上升,使用 top 命令查看 ...
  • 本文章給大家介紹自己在使用lnmpa系統時出的的Apache的httpd運行錯誤解決辦法,有碰互此問題的朋友可參考.使用軍哥的LNMPA很久了,最近突然發現這個問題,伺服器運行一段時間之後自動504錯誤,需要重啓才能解決,直接結束不了apache.運行命令/root/lnmpa statusApac ...
  • 現在使用mysql數據庫伺服器的朋友有很多,我們也經常會碰到mysql進程CPU占用100%,下面我來總結一些解決方法.解決方法一,修改my.cnf文件找到query_cache_size =0估計就是這個問題在造成
  • 電腦提示cmd.exe損壞文件怎麽辦cmd.exe已損壞解決辦法
    電腦提示cmd.exe損壞文件怎麽辦呢,cmd.exe文件是微軟Windows系統的命令行程序,類似于微軟的DOS操作系統.cmd.exe是一個16/32位的命令行程序,運行在Windows NT/2000/XP/2003/Vista/7/8上了,那麽碰到此文件丟失我們來看看如何解決吧.方法一,我們
  • MariaDB數據庫可以和mysql有得一比了,但小編在使用 MariaDB時發現日志文件很容易導致硬盤100%了,那麽此問題如何處理?下面一起來看看.解決MariaDB日志文件造成的硬盤100%問題排查1.運行如下
  • 電腦開機進入系統時在桌面會彈出找不到:c:\windows\system32\rundll32.exe文件的對話框了,那麽這個問題我們要怎麽修複呢?下面一起來看看rundll32.exe是什麽文件rundll32.e
  • 最近把系統換成了linux結果使用的php5.3中的PHP-FPM進程老占CPU 100%呀,經過反複排序終于找到了還算不錯的解決辦法,下面大家一起來看看.一.進程跟蹤 代碼如下 # top //找出CPU使用率高的進程PID# strace -p PID //跟蹤進程# ll /proc/PID/
  • mysql與apache消耗大量CPU的問題解決辦法
    今天發現自己的linux伺服器出現宕機了,後來連接伺服器發現伺服器網站CPU占100%了,我利用top查看了發現進程kswapd0與events/0消耗大量CPU了,而這兩進程正是mysql與apache的呀,下面我來給大家分析原因與解決辦法.重啓伺服器後,使用 top 命令看看是哪些進程消耗那麽大
一周排行