WordPress占用内存过高可能由多种因素引起,以下是一些可能的原因和解决方法:
-
主题和插件: WordPress的主题和插件是最常见的内存占用原因。确保使用的主题和插件是最新版本,并且只使用必需的插件。禁用不需要的插件,并逐个启用它们,以确定哪个插件占用了最多的内存。
-
数据库: 数据库的大小和性能也可能导致WordPress占用过高的内存。确保优化数据库,删除不必要的数据和记录,并使用缓存插件来减少对数据库的访问。
-
缓存: 如果您的网站没有启用缓存,则每次加载页面时都会生成新的HTML代码,这可能会导致占用过高的内存。启用缓存插件可以减少对服务器的请求,从而降低内存占用。
-
PHP版本和配置: 使用旧版本的PHP可能会导致内存占用过高。确保您正在使用最新版本的PHP,并优化php.ini文件以最大程度地减少内存使用。
-
服务器资源: 最后,如果您的服务器资源不足,则可能会导致WordPress占用过高的内存。升级到更高级别的服务器,或考虑使用云托管服务,例如AWS或Google Cloud,以确保有足够的资源来处理您的网站。
-
使用 CDN:使用 CDN 可以将静态文件缓存在全球分布的服务器上,以提高网站的加载速度和减少服务器负载。
-
优化图片和媒体文件:将图片和媒体文件进行压缩,缩小文件大小,删除不必要的文件,以减少内容占用。
总之,为了解决WordPress占用内存过高的问题,您需要对主题,插件,数据库,缓存,PHP版本和配置以及服务器资源进行全面的审核和优化。
1、wordpress 此站点遇到了致命错误
2、官方排错链接:FAQ Troubleshooting – WordPress.org Documentation
3、php-fpm 参数调整
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 10
pm.max_requests = 300
php-fpm 的相关参数
pm:表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态),默认为dynamic。
pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。
区别:如果pm设置为 static,那么其实只有 pm.max_children 这个参数生效。系统会开启设置数量的 php-fpm 进程。如果pm设置为 dynamic,那么 pm.max_children 参数失效,后面 3 个参数生效。系统会在 php-fpm 运行开始的时候启动 pm.start_servers 个 php-fpm 进程,然后根据系统的需求动态在 pm.min_spare_servers 和 pm.max_spare_servers 之间调整 php-fpm 进程数。
对于内存大的服务器(8G)以上,指定静态的max_children实际上更为妥当,因为这样不需要进行额外的进程数目控制,会提高效率。对于小内存的服务器,动态方式会结束掉多余的进程,可以回收释放一些内存。
4、关闭文章撰写的定时发布功能及自动保存草稿问题。这几个功能可以通过修改wp-cron.php内的数据来实现,我们在里面添加下面代码即可
define(‘DISABLE_WP_CRON’, true);
define (‘WP_POST_REVISIONS’, 0);
define(‘AUTOSAVE_INTERVAL’, 600);
5、通过修改robots.txt来限制搜索引擎蜘蛛不必要的站点文件。我们在里面添加下面代码即可:
User-agent: *
Crawl-delay: 10
Allow: /wp-content/uploads/
Disallow: /cgi-bin/
Disallow: /wp-login.php
Disallow: /wp-login.php*
Disallow: /wp-register.php
Disallow: /wp-register.php*
Disallow: /xmlrpc.php
Disallow: /template.html
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins
Disallow: /wp-content/themes
Disallow: /page/
Sitemap: https://www.wn789.com/sitemap.xml
Sitemap: https://www.wn789.com/sitemap.html
Sitemap: https://www.wn789.com/sitemap_baidu.xml
6、通过修改.htaccess来限制限制不必要的搜索引擎蜘蛛爬行。添加下面代码即可:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* – [F,L]
7、最后就是尽量少使占用资源较大的插件,特别是All in One SEO,Broken Link Checker,Yet Another Related Posts Plugin,NextGen Gallery最好不要使用。另外一些没有启用的插件要把插件文件都全部删除。适当使用一些优惠插件,如数据库优化Optimize Db和WP super cache 自动缓存插件。
8、用Alex Rabe开发的 WP-Memory-Usage插件来了解WordPress中的内存运用状况
Heiko Rabe开发的WordPress System Health插件会为咱们供给更全面的信息
9、WordPress能占用的内存
// 更多内存
define('WP_MEMORY_LIMIT', '64M');
// 更多更多的内存
define('WP_MEMORY_LIMIT', '96M');
// 又好又多的内存 ?
define('WP_MEMORY_LIMIT', '128M');
假如呈现空白页面,阐明扩展容量过大,体系无法接受,内存康复32MB。 祝好运
10、配置Mysql
11、查找可能占用资源的插件:通过禁用某个插件而表现得更好,如该项功能是必须的,看看您是否可以找到提供相同功能的替代插件
12、消除 Gravatar 评论页面加载延迟
Gravatars 很棒。它们让您的用户展示自己的个性,增添真实感,而且很多人都可以通过他们独特的头像轻松识别。但是,如果您收到大量评论,在您的网站上使用它们就会出现问题。每条评论都会向 Gravatar 的服务器发送一个请求。因此,如果您在一个页面上有很多评论,那么您将有很多请求来回传输,从而使该页面加载速度变慢。使用 FV Gravatar Cache 插件消除这种情况。FV Gravatar Cache 将在本地缓存这些图像,这将减少具有许多评论的页面的加载时间……
13、使用缓存插件
缓存插件将有助于更快地加载最近提供的内容。一般来说,当有人访问您的 WordPress 站点时,他们的浏览器会获取 HTML 文件,这需要运行 PHP 脚本或从 WordPress 数据库中获取数据。
好在如今大多数浏览器都足够智能,可以通过浏览器保留访问过的站点的“记忆”。这是缓存。WordPress 插件将保存提供的 HTML 文件,以便浏览器可以更快地加载它们,而无需运行脚本或从数据库中获取信息。
一些流行 WP 缓存插件有:
W3 Total Cache
WP Super Cache
WP Rocket
Comet Cache
WP Fastest Cache
14、只使用你绝对需要的热门插件
注意:在停用和删除插件之前,请查找任何卸载功能或自述文件。某些插件具有特殊的卸载程序,可以将它们从您的站点中完全删除。
15、lnmp 的php-fpm调整:
日志文件:/usr/local/php/var/log/php-fpm.log
查看nignx日志
多个版本如何管理php-fpm :/etc/init.d/php-fpm8.1 reload (单个lnmp php-fpm reload)
16、lnmp日志管理
不要使用rm命令直接删除!!!
一般系统日志在/var/log/ 下,可以ls -lh /var/log/ 看一下占用的大小
可以使用cat /dev/null > logfile 进行日志删除
cat /dev/null > /var/log/syslog
cat /dev/null > /var/adm/sylog
cat /dev/null > /var/log/wtmp
cat /dev/null > /var/log/btmp
cat /dev/null > /var/log/secure
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/messages
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/mail.info
如果是采用LNMP一键安装包安装的环境,一下地方可能还会有日志:
mysql日志:https://www.vpser.net/manage/delete-mysql-mysql-bin-0000-logs.html
nginx日志:https://bbs.vpser.net/thread-1811-1-1.html
如果仍不能确定具体磁盘的占用情况,可以使用 du -sh 命令,从/ 根目录开始挨个目录进行查找。
17、php-fpm 502 Bad Gateway
18、wordpress 数据库占用过大
19、程序执行可能超时,开慢日志一般就能确定具体函数或文件