linux服务器的一些优化
不使用atime属性,例需为/data设置notime,可修改/etc/fstab如下:
/dev/sdb1 /data ext3 noatime 0 0
#mount -o noatime,remount /dev/sdb1
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倍
修改内核共享内存限制为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} http://yxcwf.wordpress.com/
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 浏览器发出的每个请求,并显示每个请求所用的下载时间
硬盘读取数据性能
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
见http://blog.zhangjianfeng.com/?p=177
WEB服务器优化
| 客户端 | ===> |负载均衡器| ===> |反向代理/缓存| ===> |WEB服务器| ===> |数据库服务器|
- Nginx/LVS Squid Apache,PHP MySQL/ORACLE
*eAccelerator/memcache
Apache部分特性控制