linux服务器性能调优

来源:互联网 发布:30岁女装品牌推荐 知乎 编辑:程序博客网 时间:2024/04/30 00:42

1.操作系统选择优化

可不配交换区(swap)。如果内存不足,增加更多的内存
服务调优,禁用不必要启动的服务,留更多的资源给mysql;
增加系统和MySQL服务器的打开文件数量(即文件描述符)及进程和线程数量。
Reiserfs对于打开、读写都非常快。文件检查只需几秒种。XFS,EXT3,EXT4也可。
文件系统调优,给数据仓库一个单独的文件系统,一般效率更高、更可靠。
给磁盘设置合适的block大小,减少IO读写次数。
不要使用NFS。光纤存储,SAN架构。
特别提示:摘自老男孩培训-mysql高级优化精要教案,非数据库系统适当降低,不降最好。

2.最小化软件包安装优化
一般情况下安装OS时,软件安装包组(Package Group)的选择:
base--------------------------基本环境
editors-----------------------编辑器
development librarys------开发库
development tools---------开发工具
x software development--图形界面开发软件
system tools----------------系统工具
yum groupinstall "develop tools " #双引号内为安装包组的名称
yum grouplist

3.禁止开机自启动无用服务
for oldboy in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $oldboy off;done
for oldboy in crond network syslog sshd;do chkconfig --level 3 $oldboy on;done
只留:crond network syslog sshd;

4.禁止root通过SSH远程登录并更改SSH端口
[root@centos ~]#cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori
#→更改配置前进行备份,是系统管理员的一个良好的习惯。
[root@centos ~]#vi /etc/ssh/sshd_config #→编辑sshd_config
####by oldboy#2011-11-24##
Port 52113 #→ssh连接默认的端口,谁都知道,必须要改。
PermitRootLogin no #→root用户黑客都知道的,禁止它远程登陆。
PermitEmptyPasswords no #→禁止空密码登陆
UseDNS no #→不使用DNS
####by oldboy#2011-11-24##

5. chattr锁定关键系统文件
chattr +i /etc/passwd
chattr +i /etc/ shadow
chattr +i /etc/group
chattr +i /etc/gshadow
chattr +i /etc/services
chattr +i /etc/inittab
chattr +i /etc/rc.local
简单实现:
for file in /etc/passwd /etc/ shadow /etc/group /etc/gshadow /etc/services /etc/inittab /etc/rc.local
do
chattr +i $file
done

6.内核优化(/etc/sysctl.conf),以下参数不全,请勿直接使用
对这个内核参数,可参考以下文章内容:

http://www.linuxyw.com/a/tiaoyou/20130607/553.html

6.1 lvs/haproxy负载均衡代理内核参数配置
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.i
6.2 nginx/apache生产内核参数优化案例
cat >>/etc/sysctl.conf<<EOF
# Added by oldboy
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768

net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915
6.3CDN公司cache服务器内核/etc/sysctl.conf优化案例
[root@CNC-TJ-D-711 ~]# sysctl -p |grep net.ipv4
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_max_tw_buckets = 1800000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_retries1 = 22
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_sy
6.4内核参数优化特别说明
内核可优化的配置很多,但是对于一般的应用服务器来说,以上配置已经足够了。一些特殊的,甚至吹毛求疵的优化配置,要根据应用去处理,那是可遇不可求的。
老男孩培训的相关高级课程会涉及到更深入的优化。

7.增加系统文件描述符
[root@centos ~]#vim /etc/security/limits.conf
末尾加上
* - nofile 65535
注:配置完成后,重新登陆即可查看
[root@centos ~]# ulimit -n
65535
提示:也有人把ulimit -SHn 65535命令加入到/etc/rc.local,然后每次重起生效。
[root@centos ~]# tail -4 /etc/rc.local
#open files
ulimit -HSn 65535
#stack size
ulimit -s 65535

8.配置sudo对普通用户权限精细控制
9.禁ping(非必须)
[root@C ~]# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf #允许ping则赋值0
[root@C ~]# sysctl -p

10.关闭多余的控制台(非必须)
[root@C ~]# vi /etc/inittab
#将多余的控制台注释掉
# Run gettys in standard runlevels
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

11.清除多余的系统虚拟账号(非必须)
1.关闭/etc/passwd中不必要的用户(可选优化项)
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
#mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
#news:x:9:13:news:/etc/news:
#uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
#operator:x:11:0:operator:/root:/sbin/nologin
#games:x:12:100:games:/usr/games:/sbin/nologin
#gopher:x:13:30:gopher:/var/gopher:/sbin/nologi
2.关闭/etc/group中不必要的用户(可选优化项)
#lp:x:7:daemon,lp
#mail:x:12:mail
#news:x:13:news
#games:x:20:
#ftp:x:50:
#mailnull:x:47:
#smmsp:x:51:
#vcsa:x:69:
#pcap:x:77:
#ntp:x:38:

12.配置防火墙iptables和SELinux
根据自己实际情况配置iptables,一般内网的后端服务器,是不需要开启iptables的
13. grub加密码(非必须)
14.设置/etc/hosts.deny、/etc/hosts.allow(非必须)
可以控制外部IP对本机服务的访问
etc/hosts.allow 的设定优先于 /etc/hosts.deny

15.配置YUM安装源
此处可参考这篇文章:
配置网易yum源:http://www.linuxyw.com/a/qitafuwu/20130502/150.html

16.禁止键盘重启(/etc/inittab),使用字符模式level 3
[root@C ~]# vi /etc/inittab
修改以下内容:
id:3:initdefault:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
另外,centos 6 里 这个组合键 的设置单独放在里另外一个文件里:/etc/init/control-alt-delete.conf

17. /tmp临时目录安全
临时目录权限比较大,可以考虑降权。(非必须)。

18.用户账户口令8位以上、定期更换、动态口令等
用户密码在8位以上,并且包含大小写字母和数字的组合。
密码定期更换,使用mkpasswd生成动态密码
使用ldap统一密码验证,或者第三方动态口令卡。

19.注销账号的时间,命令的历史记录数
监控/var/log/secure,ssh的用户登录和注销日志
减少命令历史记录数:
vi /etc/ profile
HISTSIZE=50
TMOUT=300

20.删除登录信息(非必须)
(不显示内核版本,主机名,发行版本号及一些后台进程的版本号),防止探测。
cat /dev/null >/etc/issue
cat /dev/null >/etc/issue.net
cat /dev/null >/etc/motd
#包括应用层 比如隐藏apache ,php等的版本。

21.安装系统性能监控软件监控调试软件
yum install -y sysstat或rpm -ivh sysstat-7.0.0-3.el5.i386.rpm
附带相关命令作用:
vmstat:报告虚拟内存统计信息
mpstat:监测CPU(包括多CPU)性
iostat:监测I/O性能
sar:系统活动情况报告
●系统性能查看的重要命令分类
内存:top free、vmstat、mpstat、iostat、sar
CPU:top vmstat、mpstat、iostat、sar
I/O:vmstat、mpstat、iostat、sar
进程:ipcs、ipcrm

22.防病毒软件clamav,入侵检测ids、Tripwire(非必须)。
给每个文件建立系统指纹档案和md5校验值,定期文件比对。
26.配置服务器和互联网时间同步
echo '*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1' >>/var/spool/cron/root
提示:在机器数量少时,以上定时任务同步时间就可以了,如果机器数量大时,可以在网内在部署一个时间同步服务器ntp server,此处不在深入讲解了。大家可以自行查阅相关文章。

23.配置系统日志审计
sudo日志审计或普通日志审计。细节见老男孩相关培训文档。

24.操作系统磁盘分区划分优化
/boot 100-200M
swap 内存的1-2倍 /
/boot 100-200M
swap 16G,内存的1倍
/ 100G
/data 剩余(存放db数据)

25.负载均衡集群架构不同设备选型优化
选购的依据:价格成本、性能、冗余、维护成本。
提示:所有服务器要带独立远程管理卡。
25.1负载均衡器硬件选择及raid级别
LVS1主:DELL R610 1U,CPU E5606*2,4G*2内存 硬盘:SAS 146G*2 RAID1
LVS2主:DELL R610 1U,CPU E5606*2,4G*2内存 硬盘:SAS 146G*2 RAID1
提示:负载均衡器很重要,需要稳定,对CPU、内存要求不太高,磁盘大小要求不高,如果是haproxy/nginx,根据服务在架构中的层次和数量决定如何选硬件。;
25.2 WEB层硬件选择及raid级别
WWW主站1业务(两台):DELL R710,CPU E5606*2, 4G*4内存 硬盘:SAS 300G*2 RAID0
提示:为了节省成本,也可以选1U R610。如果机房机器海量,考虑到老跑机房换硬盘装系统的成本,也可以考虑SAS 146G*3 raid5。当然这部分也可以根据业务需要,实现虚拟化服务。
25.3 数据库层硬件选择及raid级别(适合mysql和oracle)
MYSQL主库1-1:DELL R710,CPU E5606*2 4G*8内存 硬盘:SAS 600G*6(或146G*6) RAID10
MYSQL主库1-2:DELL R710,CPU E5606*2 4G*8内存 硬盘:SAS 600G*6(或146G*6) RAID10
MYSQL从库1-1:DELL R710,CPU E5606*2 4G*4内存 硬盘:SAS 15k 600G*4 RAID0或RAID5
MYSQL从库1-2:DELL R710,CPU E5606*2 4G*4内存 硬盘:SAS 15k 600G*4 RAID0或RAID5
MYSQL从库2-1:DELL R710,CPU E5606*2 4G*4内存 硬盘:SAS 15k 600G*4 RAID0或RAID5
MYSQL从库

WWW主站2业务(两台):DELL R710,CPU E5606*2, 4G*4内存 硬盘:SAS 300G*2 RAID0
25.4 存储层硬件选择及raid级别
25.4.1数据备份硬件选择及raid级别
DELL R610,CPU E5606*2 16G内存,硬盘:SATA 7.2-10k 2T*4 可以不做raid 交叉备份
DELL R710,CPU E5606*2 16G内存,硬盘:SATA 7.2-10k 2T*6 raid5,做个raid5是折中方案
提示:备份服务一般考虑容量和冗余即可,对性能要求不高。如果容量巨大,就要考虑用磁盘阵列了设备了。
25.4.2共享存储NFS硬件选择及raid级别
NFS1:DELL R710,CPU E5606*2,16G内存,硬盘:SAS 15k 600G*6 RAID10/RAID5/RAID0
NFS2:DELL R710,CPU E5606*2,16G内存,硬盘:SAS 15k 600G*6 RAID10/RAID5
对于高并发业务,可以使用分布式存储MFS,GFS,FASTFS,HDFS等:
分布式一般是多台服务器,因此普通服务器配置就可以了。淘宝的分级存储策略可以借鉴。

26 linux服务器尽量少配外网IP地址
通过前端代理,负载均衡来给外部用户提供服务
通过堡垒机或VPN等配置公司内部人员进入服务器管理维护。
当然了这需要多台计算机才可以,如果服务器数量少,难以做到。

0 0
原创粉丝点击