WordPress卡顿反应慢,wampserver优化加速

1 篇文章 0 订阅
1 篇文章 0 订阅

一般来讲Unix/linux与Apache配合的更好,而Windows与原生的IIS服务器配合会更好,这个更好是相对默认设置来讲,很多国内外的服务器都选择采用Linux系统,相比于windows的图形化界面,Linux的命令行需要更多的程序基础和学习成本,Windows系统上面按以往Unix/linux的经验配置Apache时,由于两个系统的内存回收机制和进程管理的不同,一些参数需要重新配置。

Apache

1.在 httpd.conf 中将 Include conf/extra/httpd-mpm.conf前#去掉,以使得http-mpm.conf生效。

2.修改 conf/exrtra目录下面的 http-mpm.conf (这个文件负责控制 线程数 )

在Windows系统中,起作用的是Winnt mpm段

<IfModule mpm_winnt_module>
ThreadsPerChild      150
MaxRequestsPerChild    0
</IfModule> 

以上是默认的配置,一般情况下够用了,但负荷较大的网站就需要修改了,否则访问网站会变慢或没有响应。实际设置中可以根据apache-status查看apache实时连接状态,查看其中线程占用数目情况来进行相应的调整,我的服务器最后设置如下:

<IfModule mpm_winnt_module>
#ThreadLimit     350
ThreadsPerChild    350
MaxRequestsPerChild    10000
</IfModule> 

其中ThreadLimit是占用系统线程数限制。
注意:Apache在编译时内部有一个硬性的限制”ThreadLimit 20000″(对于mpm_winnt是”ThreadLimit 15000″),你不能超越这个限制。

ThreadsPerChlid是Apache进程的子线程数,这个指令设置了每个子进程建立的线程数。子进程在启动时建立这些线程后就不再建立新的线程了。我们应该修改另一个配置文件httpd-default.php中的超时设置来配合这个参数。

MaxRequestsPerChild是进程的最大的请求数目,既指网站收到请求的缓存数。设置太小了会影响服务器性能,因为会占用较多cpu时间,太大了则会占用内存资源。

将MaxRequestsPerChild设置成非零值有两个好处:
a)可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
b)给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

  1. 在httpd.conf中去掉Include conf/extra/httpd-default.conf前的#以使httpd-default.php生效。

需要设置如下参数:

Timeout 20
KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 5

Timeout 参数为连接超时,缺省的300秒显然太大,缩小该参数就会减少同时连接数,即用户实际占用的线程数,这样就可以起到配合上面ThreadsPerChlid参数的作用。

KeepAlive 参数为是否保持活连接,目前网站中一个页面一般会包含多个文件,所以相应用户访问时会有多个请求,因此开启可以提高服务器性能。

MaxKeepAliveRequests 参数为最大的活连接请求数,可以根据网页实际包含的文件数目自行调节。

KeepAliveTimeout 该参数为活连接的超时时间,一般只要设置成小于Timeout即可。

这样设置后,Apache在响应请求和防止恶意攻击方面就取得较为平衡的效果,当然由于内存回收机制和进程管理不同,Windows下长期运行 Apache还是不如Unix稳定,因此我们可以让Apache在每天凌晨访问人数少时自动重启一次,以回收资源。用Windows自带的计划任务就可以简单的实现。 这样,我们就使Apache在Windows平台下像Unix一样长期稳定的提供服务了。

MySQL
不优化真是过不下去啊,一直优化来优化去,竟然优化出一丝丝的快感和喜悦,这是怎么肥事?

常见的优化方式及排序如下:

硬件优化-> 系统优化 -> mysql配置优化 -> SCHEMA优化 -> sql优化 -> 其他解决方案

以下主要研究的是配置优化,一般来说提高性能够了,尤其是没有程序基础的娃,何况一个博客的数量级这样可以应付大部分的问题了。

先说结论,打开MySQL文件夹下的my.ini的配置文件,

(wamp左键点击右下角的图标,鼠标放在MySQL上就能看见)

加入如下代码:

wait_timeout=1800
back_log=200
max_user_connections=800

query_cache_size =128M
read_buffer_size=4M
myisam_sort_buffer_size = 64M

以上可以搜索看看文件里有没有,如果有改一下数值,没有加上。重启。完成。

上面给出的配置是一般的配置。大部分的情况都是够用的。

如果配合定时重启,可以解决大部分的优化问题。详见:wamp & windows定时重启

数据库属于IO密集应用,大部分的运行瓶颈在IO上,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个 IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是IO,尽可能将磁盘IO转化为内存IO。iowait过高,需要加内存,减小数据读取量。

如果CPU很高,或者查询时间很长,90%索引不当

如果系统发生swap,必定是内存分配不当

所以优化,总是会围绕着提高对内存的使用率+减少IO,比如内存缓存+索引。

wait_timeout, 设置超时时间,超过这个时间会被强行关闭。默认八小时,单位为秒。

可通过 show variables like ‘wait_timeout’查看结果值

back_log, MySql的连接数据达到max_connections时,新来的数据会扔堆栈里,堆栈的大小就是这个值

max_user_connections,指每个数据库用户的最大连接,默认为0,即不受限制。

以下是缓存方面的设置:

query_cache_size, 缓存MySQL中的ResultSet,只针对select语句,可以极大的提高性能。

read_buffer_size, 读入缓冲区大小

myisam_sort_buffer_size, 默认存储类型为MyISAM,表发生变化时重新排序所需的缓冲。

参考文章:

https://www.cnblogs.com/angryprogrammer/p/6667741.html

https://blog.csdn.net/mzy755423868/article/details/80472237

https://www.cnblogs.com/chenpingzhao/p/4850942.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值