这个一些个人的总结,加上一些前辈的经验, 下面的优化总的来讲,在我使用的一年多中,还是相当有用的,优化和不优化还是比较明显的.
下面开始正题
目标
调优 Apache 之类服务器要达到的目标是什么?什么来量化这个调的指标。答案就是 QPS.
QPS = req/sec = 请求数/秒
就是每秒能处理多少请求数。我们平时老讲并发,并发不但指保持的连接数,还有处理了多少请求。所以这个是很关键的。
这个还会影响到什么啦,就是 PV ,基本上可以简单换算,每天总PV = QPS * 3600 * 8 ,就是算一天 8 个小时的样子。
峰值QPS
每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间,如果有比较好的监控和信息收集系统。最好能用信息收集系统来处理和收集这些信息,然后量化来处理。
实际峰值流量为一天中流量最高的 5 分钟的流量
请求量的峰值为一天中请求量最高的 5 分钟的请求数。
可以这样来计算下面的内容,不过我们还是简单的使用 8/2 的分法来决定吧。
公式:
( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:
峰值时间每秒QPS / 单台机器的QPS = 需要的机器
ExtendedStatus On 因为写入额外的时间标志,设off。
MPM:worker-多进程多线程新型设计,适合高流量服务,但是不稳定,对象php之类支持非常差,不推荐, prefork-稳定,无线程,占用较多内存。
HostnameLookups off 关掉,这样少一dns查询,日志处理可以另外用软件。
注释LoadMoule指令中不要的模块。
一般说来,不需要的模块包括:
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
下面开始正题
目标
调优 Apache 之类服务器要达到的目标是什么?什么来量化这个调的指标。答案就是 QPS.
QPS = req/sec = 请求数/秒
就是每秒能处理多少请求数。我们平时老讲并发,并发不但指保持的连接数,还有处理了多少请求。所以这个是很关键的。
这个还会影响到什么啦,就是 PV ,基本上可以简单换算,每天总PV = QPS * 3600 * 8 ,就是算一天 8 个小时的样子。
峰值QPS
每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间,如果有比较好的监控和信息收集系统。最好能用信息收集系统来处理和收集这些信息,然后量化来处理。
实际峰值流量为一天中流量最高的 5 分钟的流量
请求量的峰值为一天中请求量最高的 5 分钟的请求数。
可以这样来计算下面的内容,不过我们还是简单的使用 8/2 的分法来决定吧。
公式:
( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:
峰值时间每秒QPS / 单台机器的QPS = 需要的机器
ExtendedStatus On 因为写入额外的时间标志,设off。
MPM:worker-多进程多线程新型设计,适合高流量服务,但是不稳定,对象php之类支持非常差,不推荐, prefork-稳定,无线程,占用较多内存。
HostnameLookups off 关掉,这样少一dns查询,日志处理可以另外用软件。
注释LoadMoule指令中不要的模块。
一般说来,不需要的模块包括:
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so