娱乐新地带论坛  

返回   娱乐新地带论坛 > 电脑技术 > 『软件使用』

『软件使用』 交流对软件的使用心得、经验窍门、好的软件要让大家一起用

发表新主题 回复
 
主题工具 显示模式
旧 2003-10-22, 07:24 PM   #1
No1
Tony
坛主
级别:199 | 在线时长:40426小时 | 升级还需:374小时级别:199 | 在线时长:40426小时 | 升级还需:374小时级别:199 | 在线时长:40426小时 | 升级还需:374小时级别:199 | 在线时长:40426小时 | 升级还需:374小时
 
Tony 的头像
 
注册日期: 2003-10-22
帖子: 11,053
积分:6
精华:24
现金:14348金币
资产:29325305金币
Tony 是一位成功的新星Tony 是一位成功的新星Tony 是一位成功的新星Tony 是一位成功的新星
Linux下 对Apache发掘性能

Apache的性能发掘

编译
修改src/include/httpd.h,使maxclients可以超过256限制


代码:--------------------------------------------------------------------------------
#ifndef HARD_SERVER_LIMIT
#ifdef WIN32
#define HARD_SERVER_LIMIT 1024
#elif defined(NETWARE)
#define HARD_SERVER_LIMIT 2048
#else
#define HARD_SERVER_LIMIT 1024
#endif
#endif
--------------------------------------------------------------------------------


在configure前添加

代码:--------------------------------------------------------------------------------
CC=gcc CFLAGS="-O6 -mcpu=pentiumpro"
--------------------------------------------------------------------------------


例如

代码:--------------------------------------------------------------------------------
CC=gcc CFLAGS="-O6 -mcpu=pentiumpro" ./configure ..............
--------------------------------------------------------------------------------


注意,这里优化的是intel pentium pro以上处理器(i686)

使用gmake代替make

编译安装后(make install),用 strip 将 httpd 和一些常用的 module 的符号去掉

代码:--------------------------------------------------------------------------------
strip bin/httpd
strip libexec/*.so
--------------------------------------------------------------------------------

以上为编译的优化

减少不必要的modules,去掉不用的loadmodule,addmodule
另外,如果你是公网的一台服务器,而且对所有人开放允许连接,那么可以注释了httpd.conf里面所有order,allow,deny语句

使用mod_perl代替perl,使用php的apache module代替php-cgi编译
基于gcc2


代码:--------------------------------------------------------------------------------
CC=gcc CFLAGS="-mcpu=pentiumpro" CXX=gcc CXXFLAGS="-mcpu=pentiumpro -felide-constructors" ./configure --prefix=/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --without-debug --with-client-ldflags=-all-static
--------------------------------------------------------------------------------


基于gcc3

代码:--------------------------------------------------------------------------------
CC=gcc3 CFLAGS="-mcpu=pentiumpro" CXX=g++3 CXXFLAGS="-felide-constructors -mcpu=pentiumpro" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --without-bench --with-client-ldflags=-all-static
--------------------------------------------------------------------------------


使用gmake代替make
使用gmake install-strip安装
以上为编译的优化

MySQL的配置
my.cnf
my.cnf,在mysql的安装目录share/mysql/下有几个范例,选一个适合自己的
另外还要修改一下my.cnf

代码:--------------------------------------------------------------------------------
skip-locking
#log-bin
#去掉log,提高性能
server-id = 1
skip-innodb
skip-bdb
#如果不用到bdb,innodb数据表,去掉bdb,innodb支持,节省内存
set-variable = thread_concurrency=4
#设置为你的cpu数目x2,例如,只有一个cpu,那么thread_concurrency=2
#有一个cpu,那么thread_concurrency=4
--------------------------------------------------------------------------------


将你的表转换为MYISAM形式

另外,如果你不怕是用测试版,可以用mysql4来代替mysql3,性能会有提升的
只是mysql4还是Alpha版本
编译


代码:--------------------------------------------------------------------------------
CC=gcc CFLAGS="-O6 -mcpu=pentiumpro" CXX=g++ CXXFLAGS="-mcpu=pentiumpro -O6" ./configure --with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs --disable-debug --enable-inline-optimization -q--------------------------------------------------------------------------------


使用gmake代替make
gmake install后,手动strip libphp4.so,去处.so里面的符号

优化

1.使用zend系列
使用zend optimizer
使用zend accelerator
使用zend encoder 来编译php源代码
http://www.zend.com/

2.使用php accelerator
http://www.php-accelerator.co.uk/
mmap_static_module:

mod_mmap_static.c
mod_mmap_static.so

mmap_static_module的作用是将部分 静态文件 存放在内核缓存
不过,要小心配置mmap,因为这个会导致系统不稳定,甚至当机。另外,似乎只有xNIX主机可以使用这个。

首先必须loadmodule mod_mmap_static.so或者已经编译进httpd
确认module装载了后
httpd.conf 设置语法(建议放在所有addmodule的最后,如果你没用到addmodule,那么就放在所有loadmodule后面)

MMapFile 文件1 文件2 .......

由于必须是静态文件,那么适合放进mmap的文件是.htm .html .txt .js还有就是图片文件,除了这些,配置文件conf,.htaccess .htpasswd之类也可以

需要注意的是,mmap提供文件的缓冲数有限,大概是1000个,并且单个文件的不要太大,所有动态的文件不要放进mmap,例如.php .cgi .pl等

mmap的效果明显

mysql,尽量使用socket来连接,因为使用tcp/ip会降低速度,增大系统开销
对于一个跑着httpd的系统,如果内存不大(512M)的mysql server
可以这样配置my.cnf
set-variable = max_connections=500
set-variable = key_buffer=32M
set-variable = max_allowed_packet=1M
set-variable = table_cache=64
set-variable = sort_buffer=2M
set-variable = record_buffer=1M
set-variable = myisam_sort_buffer_size=16M
skip-innodb
skip-bdb
#log-bin

而对于主要是mysql应用的,可以试用这个配置
set-variable = long_query_time=20
set-variable = join_buffer_size=1M
set-variable = connect_timeout=20
set-variable = max_connect_errors=10
set-variable = max_connections=500
set-variable = key_buffer=128M
set-variable = max_allowed_packet=4M
set-variable = table_cache=1024
set-variable = sort_buffer=4M
set-variable = record_buffer=1M
set-variable = myisam_sort_buffer_size=64M
set-variable = thread_cache=256
skip-innodb
skip-bdb
#log-bin


另外 php 连接 mysql 的 persistent connect 会造成有大量到 mysqld 的空闲连接
因为每启动一个连接都要时间和资源,而空闲连接过多则会导致当机,这样就要取消
pconnect 来维持系统稳定,当然性能会降低少许


对于apache,可以使用mod_gzip来大大减少网络的传输
mod_gzip for apache1

http://www.remotecommunications.com/apache/mod_gzip/

和mod_gzip功能一样的apache module是mod_hs,可惜只有试用版本

对于一个重负荷的web server
正确设置
MinSpareServers
MaxSpareServers
StartServers
是非常重要

MinSpareServers <= StartServers <= MaxSpareServers

Statservers为启动的时候要启动多少httpd,设的数值大于maxspareservers或者小于minspareservers都是没效果的

一个maxclients 500的server,不妨设置
MinSpareServers 30
MaxSpareServers 80
StartServers 50

而如果内存够大,而且maxclient 1024的,试试这个
MinSpareServers 50
MaxSpareServers 200
StartServers 80
Tony 当前离线  
回复时引用此帖
发表新主题 回复

书签


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码

论坛跳转


所有时间均为北京时间。现在的时间是 05:20 PM


©2003-2024 1819.net All rights reserved.