Linux新装系统优化

1 系统安装好后,通过命令ntsysv关闭不需要的服务,建议只留下如下服务即可

network:提供网络服务

syslog: 提供日志服务

crond: 计划任务

irqbalance:启用irqbalance服务,即可以提升性能,又可以降低性能耗,irqbalance用于优化中断分配,它会自动收集系统数据以及分许使用模式,并依据系统负载状况将工作置于performance mode或power-save mode状态,处于performance mode时irqbanlance会将中断尽可能均匀地分发给cpu core,以充分利用cpu的多核,提升性能,irqbalance会将中断集中分配给第一个cpu,以保证其他空闲cpu的睡眠时间,降低能耗。

建议保留

sshd:远程连接

3.I/0优化,对于一台Nginx 1分钟高并发5000ip来说。建议磁盘最好用SAS 高转速硬盘,合理考虑好磁盘的空间,进行一个合适的分配,可以考虑磁盘用LVM来规划,放webroot的分区刚刚够多几个G就够,这样能更大的发挥磁盘的读写能力,节省了磁盘分区块的扫描时间,如果webroot只读取很少写入操作,建议关闭I/0写入操作,一个文件分为 atime:访问时间,ctime 文件inode发生改变的时间,mtime文件的修改时间,如果有多个小文件(比如web服务器的页面上有多个小图片),通常就没有必要记录文件的访问时间了,这样可以减少磁盘的I/O 具体实现如下:

首先,修改文件系统的配置文件 vim /etc/fstab 然后,在包含大量小文件的分区中使用noatime和nodiratime这2个命令。例如:

/dev/sda5 /data/pics ext3 noatime,nodiratime 0 0 这样文件被访问时就不会再产生些磁盘的I/O了。

2.关闭不必要的服务,这样可以节省cpu和内存的的使用率。通过ntsysv可以方便查看 server status 下面列出建议开启的服务,其余的可以一律关闭:

crond linux下的时间计划任务服务。

irqbalance

启用irqbalance服务,既可以提升性能,又可以降低能耗。irqbalance用于优化中断分配,它会自动收集系统数据以分析使用模式,并依据系统负载状况将工作置于Performance mode或Power-save mode状态。处于Performance mode时,irqbalance会将中断尽可能均匀地分发给各个CPU core,以充分利用CPU的多核,提升性能。处于Power-save mode时,irqbalance会将中断集中分配给第一个CPU,以保证其他空闲CPU的睡眠时间,降低能耗。现在的主流服务器都是双四核,所以这项我建议保留。

network:网络 ipaddress等

sshd:远程连接

syslog: linux下日志服务,主要查看一些日志。

3.关闭不需要的tty

先编辑/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

这段命令会使init为你打开了6个控制台,分别可以用[ALT+F1]到[ALT+F6]进行访问。此6个控制台默认都驻留在内存中,用ps -aux这个命令就可以看到,这是6个进程,如下所示:

[root@localhost ~]# ps -aux| grep tty
Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.7/FAQ
root 3219 0.0 0.0  3792  488 tty1  Ss+ Mar16  0:00 /sbin/mingetty tty1
root 3220 0.0 0.0  3792  484 tty2  Ss+ Mar16  0:00 /sbin/mingetty tty2
root 3221 0.0 0.0  3792  488 tty3  Ss+ Mar16  0:00 /sbin/mingetty tty3
root 3222 0.0 0.0  3792  488 tty4  Ss+ Mar16  0:00 /sbin/mingetty tty4
root 3224 0.0 0.0  3792  488 tty5  Ss+ Mar16  0:00 /sbin/mingetty tty5
root 3226 0.0 0.0  3792  488 tty6  Ss+ Mar16  0:00 /sbin/mingetty tty6
root 3325 0.0 0.1 90548 6264 tty7  Ss+ Mar16  0:01 /usr/bin/Xorg :0 -br -audit 0 -auth /var/gdm/:0.Xauth -nolisten tcp vt7
root 6767 0.0 0.0 68284 1564 tty8  Ss+ Mar17  0:00 /bin/bash
root  31179 0.0 0.0 63372  756 pts/2 S+  17:03  0:00 grep tty

事实上没有必要使用这么多。应如何关闭不需要的进程呢?通常我们保留前两个控制台就可以了,把后面4个用#注释掉,并且无需重启,只需要执行init q这个命令即可,如下所示:

init q

4.对TCP/IP网络参数进行调整

调整TCP/IP网络参数,可以增强抗SYN Flood的能力,命令如下所示:

# echo ‘net.ipv4.tcp_syncookies = 1’ >> /etc/sysctl.conf
# sysctl -p

.修改shell命令的history记录个数

修改history记录的命令如下所示:

# vi /etc/profile

找到histsize=1000,将其改为histsize=100(这条可根据实际情况而定)。

不重启系统就可让其生效,如下所示:

source /etc/profile

5.如果用不到ipv6尽量关闭ipv6的支持。以最大限度的保证安全和快速。

6.调整Linux的最大文件打开数。

刚开始我采用vim/etc/security/limit.conf命令,在最后一行添加如下代码:

* soft nofile 60000
* hard nofile 65535

但重启后一切都还原了。

正解做法应该为在Centos5.5的/etc/rc.local文件里添加如下命令行:

ulimit -SHn 65535

当然了,我们也可以在Nginx的一些监控脚本里实时添加此命令行,达到重启也能生效的目的。

另外,ulimit -n命令并不能真正看到文件的最大文件打开数,大家可用如下脚本查看:

#!/bin/bash
for pid in ‘ps aux |grep nginx |grep -v grep|awk ‘{print$2}”
do
cat /proc/${pid}/limits |grep ‘Max open files’
done

7,如何关闭ipv6?

ipv6目前我们还不需要,但系统安装完成后它会作为模块常驻核心,没有必要,可以用这个步骤来关闭它:

首先编辑网络配置文件:

vi /etc/sysconfig/network

修改

NETWORKING_IPV6=yes

NETWORKING_IPV6=no

然后关闭其模块:vi /etc/modprobe.conf

在文件中添加以下两行

alias net-pf-10 off
alias ipv6 off

修改完成后需重启机器使之生效

8,如何关闭atime?

一个linux文件默认有3个时间:

atime:对此文件的访问时间

ctime:此文件inode发生变化的时间

mtime:此文件的修改时间

如果有多个小文件时通常没有必要记录文件的访问时间,

这样可以减少磁盘的io,比如web服务器的页面上有多个小图片

如何进行设置呢?

修改文件系统的配置文件:vi /etc/fstab

在包含大量小文件的分区中使用noatime,nodiratime两项

例如:

/dev/md5 /data/pics1 ext3 noatime,nodiratime 0 0

这样文件被访问时就不会再产生写磁盘的io

9,一定要让你的服务器运行在level 3上

做法:

vi /etc/inittab

id:3:initdefault:

让服务器运行X是没有必要的

6,优化sshd

X11Forwarding no //不进行x图形的转发

UseDNS no //不对IP地址做反向的解析

10,优化shell

修改命令history记录

# vi /etc/profile

找到 HISTSIZE=1000 改为 HISTSIZE=100

然后 source /etc/profile

发表评论

此字段内容将保密,不会被其他人看见。