ext3 不执行任何形式的数据日志记录以提供最佳的 ext3 性能添
加data=writeback
于fstab,或在mount时加 -o data=writeback
调整默认的同时可打开最大文件数以及i-节点数
# echo ‘8192′
> /proc/sys/fs/file-max
# echo ‘32768′ > /proc/sys/fs/inode-max
#
加入rc.local
#一般最大打开文件数可设置为每4m物理内存256,即256m内存可设为16384,而最大的使用的i节点应是最大打开文
件数目的3-4倍
#cat /proc/sys/fs/file-nr
共有三个值, 第一个是系统开机以来总共打开的文件
描述符的数量,第2个是总共的空闲的文件描述符的数量,第3个是最大能打开的文件描述符的数量
修改内核共享内存限制为256m,默认是32m
echo
268435456 >/proc/sys/kernel/shmall
echo 268435456
>/proc/sys/kernel/shmmax
禁止广播和ping入
echo “1″ >
/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo “1″ >
/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
sysctl一些优化
sysctl -w net.ipv4.ip_conntrack_max=655360
##解决
messages suppressed报错问题
sysctl -w
net.ipv4.neigh.default.gc_thresh3=4096
sysctl -w
net.ipv4.neigh.default.gc_thresh2=2048
sysctl -w
net.ipv4.neigh.default.gc_thresh1=1024
sysctl -w
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=60
sysctl -w
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=30
sysctl -w
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=60
sysctl -w
net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_tw_recycle=1
进程限制
ulimit -n 4096 #
将每个进程可以打开的文件数目加大到4096,缺省为1024
ulimit -m 4096 # 限制每个进程使用的内存数
看io数据
iostat -t 5 5
iostat -x
sar
-d 2 20
32位操作系统文件大小就是2g,for x86-64版本的el4支持超过2g的文件
相关限制调高
echo “xxxx”
>/proc/sys/fs/file-max #整个系统所有可打开文件 总数的限制。xxxx值可按256/4m内存计算。
ulimit
-n 10000 #某一程序可打开文件 总数的限制
块大小
mkfs.exe3 -b 4096 -m 1
/dev/sdb1 #使用4k块,保留空间设为1%(default 5%)
#大文件区可以使用较大块增加性能(但大块浪费空间)
使用tmpfs
tmpfs 文件系统会完全驻留在 ram
中,速度快,但重启数据将丢失.默认分区大小是系统内存的一半,可以size=1024m修改。
mkdir /dev/shm/ram
mount
–bind /dev/shm/ram /ram
关闭不需要的tty
vi /etc/inittab
1:2345:respawn:/sbin/mingetty
tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty
tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty
tty5
6:2345:respawn:/sbin/mingetty tty6
把后面4个注释掉.
init q
#重新执行/etc/inittab,可以不重启生效。
关闭ipv6?
vi /etc/modprobe.conf,在文件中添加以下两行
alias net-pf-10 off
alias
ipv6 off
使用 curl 度量 web 站点的响应时间
curl -o
/dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total}
0.052:0.955:1.964
#time_connect
建立到服务器的 tcp 连接所用的时间
#time_starttransfer 在发出请求之后,web
服务器返回数据的第一个字节所用的时间
#time_total 完成请求所用的时间
#这些计时器要先于dns查询。因此,在发出请求之
后,web 服务器处理请求并开始发回数据所用的时间是 0.955-0.052=0.903 秒。客户机从服务器下载数据所用的时间是
1.964-0.955=1.009 秒。
#firefox 浏览器的 tamper data 可以在日志中记录 web
浏览器发出的每个请求,并显示每个请求所用的下载时间
使用curl取url的head信息
curl -i url
硬盘读取数据性能
hdparm -tt /dev/sda
网络文件系统(nfs)
nfs客户端可使用rsize=32768,wsize=32768,intr,noatime
挂装远程文件系统
* 使用大的读/写块(数字指定最大块大小,在这个示例中是 32kb)。
* 在挂起时 nfs 操作可以被中断。
*
不持续更新 atime。
# nfsstat -rc 命令评估客户机连接情况
client rpc stats:
calls
retrans authrefrsh # retrans列是零,这表示系统启动后没有出现需要重新传输的情况。
1465903813 0 0
#如果这个数字比较大,就应该考虑增加 nfs 内核线程,如运行rpc.nfsd 128
网卡做bonding
见
web服务器优化
| 客户端 | ===> |负载均衡器| ===> |反向代理/缓存| ===>
|web服务器| ===> |数据库服务器|
- nginx/lvs squid apache,php mysql/oracle
*
eaccelerator/memcache
apache部分特性控制
allowoverride none
#禁止寻找.htaccess,加快响应.
options followsymlinks #不检查相关文件是不是符号连接,加快响应.
maxkeepaliverequests
50 #一次持续长连接最多允许接收几次请求,如太大会消耗更多内存
keepalivetimeout 5
#长连接在无活动后等待多久自动关闭,太小会导致频繁创建新的进程,太大会占连接
serverlimit
20 #服务器允许配置的进程数上限
threadlimit 200 #每个子进程可配置的线程数上限
startservers 5
#服务器启动时建立的子进程数
minsparethreads 50 #最小空闲线程数
maxsparethreads 250 #
设置最大空闲线程数
maxclients 2000 #
同一时间最大接入请求数量(serverlimit乘threadsperchild的值)
threadsperchild 100
#每个子进程建立的常驻的执行线程数,子进程在启动时建立这些线程后就不再建立新的线程了
maxrequestsperchild 10000
##每个进程只响应xxxx次,超过此数后关闭自身并启用新的进程
timeout 300
#客户程序和服务器连接的超时间隔
keepalive on #用于支持http 1.1版本的一次连接、多次传输功能
maxkeepaliverequests
100 #一次连接可以进行的http请求的最大请求次数。其值为0时为不限制
#extendedstatus on
#服务器提供运行状态信息。
#serveradmin
keepalivetimeout
15 #一次连接中的多次请求传输之间的时间,超过定义值后,服务器就断开连接。–找相对低端的机器处理图片和 html 页面,使用squid或设置keepalives off ,来减少断开连接的时间。
–
将图片与页面服务器进行分离,因图片传输需要的时间更长,传输需要花很大开销在建立连接上,apache并发性能肯定会下降
–web目录中文件数
不要太多(超过1000),文件越多花费在定位上的时间也越多.
其它
对于 php 脚本而言,主要的瓶颈是 cpu
,对于静态页面而言,瓶颈是内存和网络。
3、apache 处理 php 脚本的速度要比静态页面慢 2-10
倍,因此尽量采用多的静态页面,少的脚本。
4、php 脚本如果不做缓冲,每次调用都需要编译,因此,安装一个 php 缓冲产品能提升
25-100% 的性能。
[第三方软件优化]
18、如果喜欢从修改 apache 源码入手,可以安装 lingerd。在页面产生和发送后,每个 apache
进程都会浪费一段时光在客户连接上,lingerd 能接管这项工作,让 apache 迅速服务下一个客户请求。
19、如果你足够勇敢的话,还
可以采用 silicon graphics 的 accelerated apache 补丁。这个工程能使 apache 1.3 快 10 倍,使
apache 2.0 快 4 倍。
安装一个 php 缓冲产品能提升 25-100% 的性能。
test web server’s compression
support
apache优化原则
1点击/秒以下,可以不优化apache与系统的接口
1点击/秒以上,需要优化apache与系统的接口
每
日pv数 / 86400秒 * 10个派生连接数 * 5秒内响应 * 5倍峰值) / web服务器台数 = 同时连接数
buffer 设置
/proc/sys/net/core/rmem_default &
/proc/sys/net/core/wmem_default
性能瓶径值
cpu >80%
vmstat 中r(run)<5,b(behind)≈0,
ibm
rs/6000: 好 坏 糟糕
cpu: user% sys%< 70% user% sys%= 85% user%
sys%=90%
磁盘: iowait % < 30% iowait % =40% iowait % = 50%
内存:
无pagein pageout 每个cpu 达到10 page/秒 更多的pagein pageout
网络 < 30% 网络带宽
运
行队列(run queue) < 2 * cpu个数
一般来说vmstat的性能指标为:wa不超过25,us sy多用户情况下不超过80%,r和b不高于5,pi和po基本为零,fr:sr 接近1:1(当然都为零最好),fre一般不要底到120.
io调整优化
cat /sys/block/sda/queue/scheduler #确定正在使用的是哪个 i/o 调度程序
在
grub.conf的相应启动选项里加入elevator=deadline,如:
kernel /vmlinuz-2.6.6 ro
root=/dev/sda6 elevator=deadline
#deadline的i/o调度器,在数据吞吐量非常大的数据库系统中表现得
更有优势。
各瓶径判断方向
用iostat、sar、tprof检测是否是cpu原因
用vmstat、svmon检测是否是内存原因
用
filemon、iostat检测是否是硬盘原因
用netstat 、nfsstat检测是否是网络原因
一些概念
pageout
指的是磁盘上内存页从物理内存到 swap 空间的转移
svctm: 平均每次设备i/o操作的服务时间 (毫秒)。
%util:
一秒中有百分之多少的时间用于 i/o 操作