新聞中心
wordpress 出現(xiàn)內(nèi)存不夠怎么辦
1、靜態(tài)文件優(yōu)化
創(chuàng)新互聯(lián)公司從2013年成立,先為徽縣等服務(wù)建站,徽縣等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為徽縣企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
網(wǎng)站的靜態(tài)文件一般有兩種:第一種是網(wǎng)站的 CSS,Javascript 和一些主題的常用背景圖片和按鈕文件,這些圖片如果網(wǎng)站不進行改版或者其他改動,基本上是不會修改的,第二種是每天更新的網(wǎng)站內(nèi)容中上傳的圖片或者附件,這些圖片文件也是基本不會改動的。
解決好靜態(tài)文件存儲和加速,網(wǎng)站性能就首先能得到基本的保證了,WordPress 構(gòu)建的網(wǎng)站和博客也是一樣的。對于這些靜態(tài)文件來說,最好的解決方案永遠是使用 CDN 網(wǎng)絡(luò)進行加速,這樣服務(wù)器的壓力將大大降低,因為訪問頁面只有當前頁面是在自己服務(wù)器上,其他所有圖片 JS CSS 都是從 CDN獲取的。
2
服務(wù)器優(yōu)化
優(yōu)化好靜態(tài)文件之后,就要開始對網(wǎng)站的動態(tài)內(nèi)容進行優(yōu)化,優(yōu)化動態(tài)內(nèi)容,首先要有一個穩(wěn)定網(wǎng)絡(luò)環(huán)境,穩(wěn)定的主機供應(yīng)商和服務(wù)器性能的優(yōu)化。
選擇一個靠譜的主機托管商,在國內(nèi)這個很多時候讓你抓狂,但是只要努力還是可以的。個人選擇 BGP 或者多線機房,讓全國用戶訪問都能有不錯的速度,然后盡量選擇獨立的服務(wù)器,再不濟,也得 VPS, :-) 因為你沒有服務(wù)器的 Root 權(quán)限很多東西是無法進行的(個人博客可以考慮選擇我愛水煮魚目前使用的 Media Temple 這類的 VPS 主機),當然你也可以找我合租,速度肯定非常強悍。
WordPress 緩存機制和如何緩存
要徹底明白和搞懂 WordPress 性能優(yōu)化,首先要理解 WordPress 緩存機制,WordPress 默認是一種叫做 WordPress Object Cache 的對象緩存機制,它是把需要緩存的內(nèi)容按照 Key-Value 這樣的模式進行緩存(和 No-SQL 的 key-value 的有點類似),當然它還支持按照 Group 來劃分和避免緩存的內(nèi)容沖突。
所以最基礎(chǔ)的 WordPress 緩存插件就是,把 WordPress 產(chǎn)生的 Key-Value 存起來,如果是使用 Memcached,就是存到內(nèi)存,如果使用 Flie 就是存到硬盤中,當然高級的 WordPress 插件還能做更多,比如 WP Super Cache把整個頁面緩存到硬盤中,下次直接訪問靜態(tài)的 HTML 文件,讓服務(wù)器直接繞過 PHP,節(jié)約 CPU 時間。 Batcache 會把整個頁面當做一個對象存到內(nèi)存里面。
App每日推送 由于注冊用戶操作比較頻繁,不適合 WP Super Cache 這樣的靜態(tài)緩存,對硬盤讀寫太多,討論區(qū)又無法緩存,我們使用 Memcached 和 Batcache 搭配的內(nèi)存緩存模式:
對于已登陸的用戶,Memcached 會把 WordPress 的對象存到內(nèi)存里面,服務(wù)器的內(nèi)存足夠大,讀取和存儲速度也夠快,并且內(nèi)存緩存命中率也大于 94%。另外我們 WordPress 程序經(jīng)過優(yōu)化,每個頁面的查詢一般在 2 條左右,所以整個網(wǎng)站效率很高。
WordPress 程序優(yōu)化
WordPress 程序優(yōu)化是基于 WordPress Object Cache 的機制對 WordPress 插件和主題進行優(yōu)化,主要經(jīng)驗有以下幾點:
只使用必須的 WordPress 插件,安裝太多的 WordPress 插件很容易引起性能問題。從正規(guī)站點下載 WordPress 主題,這樣下載的主題才能保證質(zhì)量和安全。WordPress 主題和插件盡量使用模板函數(shù),因為 WordPress 模板函數(shù)如果可能都已經(jīng)做好了 WordPress Object Cache。比如 get_the_terms 和 wp_get_object_terms 這兩個函數(shù),功能基本一樣,但是 get_the_terms 直接從對象緩存中取數(shù)據(jù),無查詢,而 wp_get_object_terms 每次都從數(shù)據(jù)庫中取數(shù)據(jù)。WordPress 插件和主題如果一定要直接查詢數(shù)據(jù)庫,請做好 Object Cache,將查詢的結(jié)果使用 wp_cache_set 存到 Object Cache 中,下次直接使用 wp_cache_get 獲取。
5
WordPress 性能優(yōu)化總結(jié)
選擇好的服務(wù)器和托管商,對 WordPress 程序進行優(yōu)化,并且做好緩存,WordPress 效率其實很高的,加上 WordPress 本身的靈活性和功能強大,WordPress 作為各種建站絕對是非常不錯的選擇,所以我一直使用 WordPress 建站。
6
WPJam Debug 插件
最后補充一個 WordPress 性能檢測的插件:WPJAM Debug,可以在頁腳顯示當前頁面有多少條 SQL 查詢,頁面生成花了多少時間,并且把 SQL 按照執(zhí)行順序和按照耗時兩種方式列出,通過這樣的方式幫你分析 WordPress 哪條 SQL 查詢有問題或者比較慢,然后著手改進它。
如何在wordpress上增加文件上傳的大小限制
本文只限Apache配置主機的使用方法,增加WordPress文件上傳大小限制:通過配置php.ini的upload_max_filesize 和 post_max_size,重啟Apache;通過修改.htaccess文件。
最近在用WordPress做一個視頻B2B網(wǎng)站,所需要的上傳的文件已經(jīng)遠遠超過了32MB的限制(32MB的視頻能干什么啊)。
網(wǎng)上分享的方法
一如既往的百度,基本大同小異,最后參考了WordPress啦!的增加文件上傳大小限制:
一般來說你使用的主機會限制你上傳文件的大小,在WordPress的媒體文件上傳可以看到,大多數(shù)都是2MB(我的是32MB)。如果是圖片的話可能會還夠用,但是如果是音頻和視頻文件就不一定夠用了。
方法一:
在functions.php中添加如下代碼,這樣上傳限制就是64M
復(fù)制代碼
代碼如下:
@ini_set( 'upload_max_size' , '64M' );
@ini_set( 'post_max_size', '64M');
@ini_set( 'max_execution_time', '300' );
方法二:
新建一個php.ini文件,在你的主機空間的根目錄新建一個php.ini文件,里面使用如下代碼。
復(fù)制代碼
代碼如下:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
方法三:
使用.htaccess文件,在這個文件中添加如下代碼。
復(fù)制代碼
代碼如下:
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300
子任采用方法
我現(xiàn)在是使用的WordPress3.4+版本,上傳文件大小已經(jīng)是主機配置決定的了,主機本身配置upload_max_filesize 和 post_max_size 都是32M,想要得到效果:
WordPress文件上傳大小300MB
上述方法一:無效!
上述方法二:有效,重啟Apache
上述方法三:有效,無需重啟Apache
總結(jié):上傳大小主要用服務(wù)器配置決定的,例如后兩種方法;而第一種方法不過在服務(wù)器配置的基礎(chǔ)上來進一步用程序來限制罷了。
子任出于綜合考慮,減少服務(wù)器不必要的負擔,最后采取了第二種方法:
復(fù)制代碼
代碼如下:
upload_max_filesize = 300M
post_max_size = 300M
max_execution_time = 300
在做優(yōu)化的時候,碰到這么一個問題,需要在一篇文章中加入一個大小為19.4MB的PDF文件,而wordpress限定的文件大小只有8MB,那么如何在WP博客上上傳文件,而且文件大小不受限制呢?
方法很簡單,只需要3步就可以增加wordpress文件上傳大小的設(shè)置:
首先,我們打開FTP進入wordpress博客站點的根目錄,找到一個名為php.ini文件,下載到我們的電腦桌面上,用DreamWeaver打開文件后加入下面2行代碼,
post_max_size = 20M
upload_max_filesize = 20M
然后我們把這個文件更名為php5.ini。
請注意,上面我控制上傳文件大小和文章大小為20M,你可以根據(jù)你自己的需要設(shè)置上限。
下一步我們打開文件wp-config.php文件,看到這個是不是很熟悉?這個文件就在你的wordpress目錄下,我們以前安裝wordpress就是編輯的這個配置文件,現(xiàn)在我們需要再給它加上一段代碼來完成文件上傳大小的設(shè)置,
define('WP_MEMORY_LIMIT', '64M');
注意請在保存前把編碼更改為博客默認的編碼,例如我的編碼是UTF-8,如果不修改的話就會出現(xiàn)亂碼甚至打不開的問題。
最后一步,保存上面2個文件,一個是php5.ini,另一個是wp-config.php,然后在FTP上刪除php.ini,上傳這2個文件,大功告成!刷新一下你的wordpress后臺,你會發(fā)現(xiàn)上傳文件大小已經(jīng)變更為你設(shè)置的大小。
wordpress出現(xiàn)wordpress out of memory的錯誤怎么辦
真是糾結(jié),剛在登陸我的wordpress后臺的時候發(fā)現(xiàn)網(wǎng)站無法打開,只能打開登陸頁面,其他頁面一直是無法響應(yīng)……
馬上打開網(wǎng)站日志,查看錯誤文件發(fā)現(xiàn)錯誤時:out of memory (allocated 9699328) (tried to allocate 393216 bytes)
意思很簡單:內(nèi)存溢出。也就是內(nèi)存不夠的意思,二話不說先恢復(fù)網(wǎng)站再說,直接重啟apache,重啟后正常……
但是問題出現(xiàn)了不能就這樣忽略掉呀,如果不處理肯定下次還會出現(xiàn)這種問題,既然提示內(nèi)存不足那么就我直接調(diào)大wordpress運行的內(nèi)存,
這是最簡單的方式了。再想一想wordpress哪設(shè)置了內(nèi)存大小呀,有點影響wp-config.PHP里面有,打開找一找,怪了,沒有……
經(jīng)過漫長的尋找終于在wp-includes/defaule-constants.php 中找到,在wp_initial_constants方法中,方法是這樣寫的,[無線通信模塊]主要的幾句是:
1 if ( !defined('WP_MEMORY_LIMIT') ) {
2 if( is_multisite() ) {
3 define('WP_MEMORY_LIMIT', '64M');
4 } else {
5 define('WP_MEMORY_LIMIT', '32M');
6 }
7 }
8
9 if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) {
10 define( 'WP_MAX_MEMORY_LIMIT', '256M' );
11 }
第一行:如果沒有定義WP_MEMORY_LIMIT
第二行:如果網(wǎng)站只有一個(可以在一個wordpress建立多個站)
第三行 如果有多個網(wǎng)站就設(shè)置wordpress的內(nèi)存為64M
第四行:如果沒有多個網(wǎng)站就設(shè)置他的內(nèi)存為32M(哈哈,找到了,wordpress默認的大小為32M)
第9行:如果設(shè)有設(shè)置WP_MAX_MEMORY_LIMIT最大內(nèi)存的話
第10行:如果沒有設(shè)置最大內(nèi)存的話,就定義最大內(nèi)存為256M……
綜上所述:wordpress設(shè)置默認的內(nèi)存為32M,如果內(nèi)存不夠用,最大不會超過256M……
256M實際上已經(jīng)夠大了,不過感覺最小32M太小了,改,這個一定得改,把他改成100M,默認100M
所以在wp-config.php中增加一行配置:define("WP_MEMORY_LIMIT", "100M");
把默認的32M改成了100M……這樣總行了吧,改后繼續(xù)觀察……
建博客半年第一次發(fā)生這種事情……
更多 wordpress內(nèi)容請看 wordpress 專題
在想想,這樣改的確是改了wordpress的,但是php也有限制呀,php限制了的話,wordpress設(shè)置成1G都是沒用的,打開php.ini文件,查看一下默認的php的內(nèi)存多大,找到memory_limit默認的是128M,
memory_limit = 128M
哦,原來如此,php設(shè)置的最大內(nèi)存是128M,所以上面的wordpress配置中的256M是沒有作用的,php這里限制在128M以內(nèi)。
經(jīng)過這幾個分析統(tǒng)一起來,最終的wordpress的內(nèi)存設(shè)置是:最小100M,最大128M,內(nèi)存大小在2者之間變動。
在觀察一段時間,如果沒有出現(xiàn)錯誤的話就這樣,再發(fā)生內(nèi)存不足的問題,果斷把php中的128M改成256M……
友情提示:我敢保證我的模板,我在模板中寫的代碼沒有任何性能問題,作為一個超級軟件設(shè)計師這點自信還是有的……
如果你的wordpress老是經(jīng)常內(nèi)存不足,就要在模板,在自己寫的代碼上找原因,因為性能低下的代碼用超級計算機都是沒用的,給你一臺銀河計算機還是照樣會內(nèi)存溢出……
本文標題:包含wordpress32m的詞條
標題來源:http://www.ef60e0e.cn/article/ddojpij.html