Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103570
  • 博文数量: 22
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 235
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-15 21:44
个人简介

Just start from your heart.

文章分类

全部博文(22)

文章存档

2015年(5)

2014年(17)

我的朋友

分类: LINUX

2014-08-13 17:37:20

一、根据服务器的应用来选购服务器
1、负载均衡
它对服务器的要求非常低,尤其是用来做LVS负载时,它会直接将所有的连接要求转给后端的web应用。所以,在保证网卡性能的前提下,可以将性能相对较差的配置用作负载均衡
2、缓存服务器
主要是squid或varnish等,重点考虑两方面的因素,即内存尽量多些,硬盘尽量快些,不要因为硬盘的I/O影响了整体性能。
3、web前端服务器
正常情况下,大多数web前端服务器对服务器的要求不高,例如静态web服务器、动态服务器、图片服务器等。事实上现在很流行在一台性能卓越的服务器上同时运行web前端+应用服务器,比如nginx+php-FPM、nginx+Tomcat或nginx+Resin
4、应用服务器
由于它承担了计算和功能实现的重任,我们需要为基于web架构的应用程序服务器选择足够快的服务器。另外应用程序服务器可能需要用到大量的内存,尤其是基于windows基础架构的ruby、Python、java服务器,这一类服务器至少需要使用单路至强的配置至于可靠性的问题,如果你的架构中只有一台应用服务器,那这台服务器需要足够可靠,RAID是绝对不能忽视的选项。但如果有两台或更多的应用服务器,并设计了负载均衡机制、具有冗余功能,那就不必过于担心了。
5、特殊的应用
除了web架构中的应用程序之外,如果你的服务器还要处理流媒体视频编码、服务器虚拟化、媒体服务器,或者作为游戏服务器运行,那同样会对CPU和内存的需求比较高,至少也要考虑单路至强的服务器。其中,服务器虚拟化对存储可靠性要求非常高,因为一个篮子里有十几个鸡蛋,篮子要足够牢靠才行。
6、公共服务
这里指的是邮件服务器、文件服务器、DNS服务器、域控制服务器等。通常我们会部署两台DNS服务器互相备份,域控主服务器也会拥有一台备份服务器,所以对于可靠性无需过于苛刻。至于邮件服务器,至少需要具备足够的硬件可靠性和容量大小,这主要是对邮件数据负责,因为很多用户没有保存和归档邮件数据的习惯,待其重装系统后,就会习惯性的到服务器上重新下载响应的数据。至于性能问题,则应评估用户数量后再决定。另外,考虑到它的重要性,建议还要尽量选择稳定的服务器系统,比如Linux或BSD系统
7、数据库
数据库对服务器的要求也是最高、最重要的。无论你使用的是mysql、SQL server还是oracle,一般情况下,它都需要有足够快的CPU、足够大的内存、足够稳定可靠的硬件。建议使用固态硬盘作为RAID10,因为数据库服务器对硬盘的I/O要求是最高的。

二、系统最小化安装后的优化
1、关闭不需要的服务
需要启动的服务:
(1)、crond
Linux下的时间计划任务服务
(2)、irqbalance
启用irqbalance服务,即可以提升性能,又可以降低能耗。irqbalance用于优化中断分配,它会自动收集系统数据以分析使用模式,并依据系统负载状况将工作置于performance mode或Power-save mode 状态。处于Performance mode时,irqbalance会将中断尽可能均匀的分发给各个cpu core,以充分利用cpu的多核,提升性能。处于Power-save mode时,irqbalance会将终端集中分配给第一个cpu,以保证其他空闲cpu的睡眠时间,降低能耗。
(3)、network
(4)、sshd
(5)、syslog
这是Linux的日志系统,必须要启动,否则机器出现问题时会找不到原因。
(6)、两个比较特殊的服务:iptables和SELinux。
网站和系统之前均由硬件防火墙,如果没有特殊需求的话,均可选择关闭,关闭命令如下:
关闭iptables:
service iptables stop && chkconfig iptables off
关闭SELinux的方法如下:
vim /etc/selinux/config 
将文件中的selinux = “” 改为disabled,并重启。如果不想重启,使用命令 setenforce 0可以暂时关闭selinux。重启后失效。
2、关闭不需要的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个控制台,事实上没必要用这么多,通常保留前两个控制台就可以了,把后面4个用#注释掉,并且无需重启,只需要执行init q 这个命令即可。
3、对TCP/IP网络参数进行调整
echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf 
sysctl -p
调整TCP/IP网络参数,可以增强SYN Flood的能力,操作前建议用sysctl -a > sysctl -file保存当前配置
4、修改shell命令的history记录个数
vi /etc/profile
找到histsize=1000,将其改为histsize=100(根据情况而定)
source  /etc/profile
不重启系统就可以让其生效
5、定时校正服务器的时间
yum -y install ntp
crontab -e
 * 5 * * * ntpdate ntp.api.bz
6、停止打印服务
[root@localhost ~]# /etc/rc.d/init.d/cups stop
Stopping cups:                                             [  OK  ]
[root@localhost ~]# chkconfig cups off
[root@localhost ~]# chkconfig --list cups
7、调整Linux的最大文件打开数
vi /etc/rc.local
 ulimit -SHn 65535
要调整一下Linux的最大文件打开数,否则squid在高负载时执行性能将会很低,另外,Linux下面部署应用时,有时候会遇上Socket/File: Can't open so many files 这样的问题,这个值会影响服务器的最大并发数。Linux是有文件句柄限制的,但默认不是很高,一般是1024,生产服务器很容易就会达到这个值,所以需要改动此值。
另外,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
8、启动网卡
配置网卡时,容易忽略的一项就是Linux启动时未启动网卡,会导致Linux机器永远没有IP
[root@web2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
DEVICE=eth0
BOOTPROTO=none
HWADDR=E4:1F:13:E5:EB:18
ONBOOT=yes                   ——>此项一定要记得改为yes,它会在系统引导就启动你的网卡设备
DHCP_HOSTNAME=web2
IPADDR=172.16.1.6
NETMASK=255.255.255.0
TYPE=Ethernet
USERCTL=no                   ——>不允许普通用户修改网卡
IPV6INIT=no
PEERDNS=yes                  ——>允许从DHCP处获得的DNS覆盖本地的DNS
DEVICE=eth0
BOOTPROTO=none
SLAVE=yes
MASTER=bond0
TYPE=Ethernet
9、关闭Linux的写磁盘I/O功能
一个Linux文件默认有3个时间
(1)、atime:对此文件的访问时间
(2)、ctime:对此文件inode发生变化的时间
(3)、mtime:此文件的修改时间
如果有多个小文件(比如web服务器的页面上有多个小图片),通常就没必要记录文件的访问时间了,这样子可以减少写磁盘的I/O,配置如下:
(1)、首先,修改文件系统的配置文件:vim  /etc/fstab 
(2)、在包含大小文件的分区中使用noatime和nodiratime这两个命令:
/dev/sda5 /data/pics ext3 noatime,nodiratime 0 0
这样文件被访问时就不会再产生写磁盘I/O了,此方法比较适合读写频繁的数据库系统

优化Linux下的内核TCP参数以提高系统性能










阅读(1623) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~