分类 运维 下的文章

centos开机启动服务优化笔记

默认开机启动服务列表:

服务名称 功能 默认 建议 备注说明
NetworkManager 用于自动连接网络,常用在Laptop上 开启 关闭 对服务器无用  服务器一般固定配置网络,不会自动获取ip等
abrt-ccpp   开启 自定 对服务器无用
abrt-oops   开启 自定 对服务器无用
abrtd   开启 自定 对服务器无用
acpid 电源的开关等检测管理,常用在Laptop上 开启 自定 对服务器无用
atd 在指定时间执行命令 开启 关闭 如果用crond,则可关闭它
auditd 审核守护进程 开启 开启 如果用selinux,需要开启它
autofs 文件系统自动加载和卸载 开启 自定 只在需要时开启它,可以关闭
avahi-daemon 本地网络服务查找 开启 关闭 对服务器无用
avahi-dnsconfd avahi DNS 关闭 关闭 对服务器无用
bluetooth 蓝牙无线通讯 开启 关闭 对服务器无用
dund 蓝牙相关 开启 关闭 对服务器无用
hidd 蓝牙相关 开启 关闭 对服务器无用
pand 蓝牙相关 关闭 关闭  
conman 控制台管理 关闭 关闭 无用
certmonger   关闭 关闭  
cpuspeed 调节cpu速度用来省电,常用在Laptop上 开启 关闭 对服务器无用
crond 计划任务管理 开启 开启 常用,开启
cups 通用unix打印服务 开启 关闭 对服务器无用
dnsmasq dns cache 关闭 关闭 DNS缓存服务,无用
firstboot 系统安装后初始设定 关闭 关闭  
fcoe Open-FCoE  initiator    以太网光纤通信 开启 关闭 除非服务器光纤直连,否则无用
gpm 控制台下的鼠标支持 开启 开启  
haldaemon 硬件信息收集服务 开启 开启  
ibmasm ibm硬件管理 关闭 关闭  
ip6tables ipv6防火墙 开启 关闭 用到ipv6网络的就用,一般关闭
iptables ipv4防火墙 开启 开启 ipv4防火墙服务
irda 红外线通信 关闭 关闭 无用
irqbalance cpu负载均衡 开启 自定 多核cup需要
iscsi 网络存储相关 开启 关闭  
iscsid 网络存储相关 开启 关闭  
kdump 硬件变动检测 关闭 关闭 服务器无用
kudzu 硬件变动检测 低版本的系统中 关闭 关闭 对服务器无用
livesys 安装系统相关服务 开启 关闭  
livesys-late 安装系统相关服务 开启 关闭  
lvm2-monitor lvm监视 开启 自定 如果使用LVM逻辑卷管理就开启
blk-availability lvm2相关 开启 自定 如果用lvm,则建议开启,否则不需要
mcstrans 在开启selinux时用于检查context 开启 关闭  
matahari-broker   关闭 关闭 此服务不清楚,我关闭
matahari-host   关闭 关闭 此服务不清楚,我关闭
matahari-network   关闭 关闭 此服务不清楚,我关闭
matahari-service   关闭 关闭 此服务不清楚,我关闭
matahari-sysconfig   关闭 关闭 此服务不清楚,我关闭
mdmonitor 软raid监视 开启 自定  使用软raid的服务器开启
mdmpd 软raid管理 关闭 关闭  
multipathd   关闭 关闭  
messagebus 负责在各个系统进程之间传递消息 开启 开启 如停用,haldaemon启动会失败
microcode_ctl cpu微码管理升级 开启 关闭  
netconsole   关闭 关闭  
netfs 系统启动时自动挂载网络文件系统 开启 关闭 如果使用nfs服务,就开启
network 系统启动时激活所有网络接口 开启 开启 网络基础服务,必需!
netplugd 网线热插拔监视 关闭 关闭  
nfs 网络文件系统 关闭 关闭 nfs文件服务,用到就开启
nfslock nfs相关 开启 关闭 nfs相关服务,用到就开启
nscd name cache,应该与DNS相关 关闭 关闭  
ntpd 自动对时工具 关闭 自定 网络对时服务,用到就开启
ntpdate 自动对时工具 关闭 关闭  
oddjobd 与D-BUS相关 关闭 关闭  
portreserve RPC 服务相关 开启 自定 可以关闭
pcscd pc/sc smart card daemon 开启  关闭  
portmap 使用NFS、NIS时的port map 开启 关闭  
postfix 替代sendmail的邮件服务器 开启 自定 如果无邮件服务,可关闭
psacct 负荷检测 关闭 关闭 可以关闭
qpidd 消息通信 开启 开启  
quota_nld   关闭 关闭 可以关闭
rdisc 自动检测路由器 关闭 关闭  
rawdevices raw设备支持 开启 开启  
readahead_early 提前预读相关 开启 开启  
readahead_later   关闭 关闭  
restorecond selinux相关 关闭 关闭 如果开启了selinux,就需开启
rpcbind   开启 开启 关键的基础服务,nfs服务和桌面环境都依赖此服务!相当于CentOS 5.x里面的portmap服务。
rpcgssd NFS相关 开启 关闭 NFS相关服务,可选
rpcidmapd RPC name to UID/GID mapper 开启 关闭 NFS相关服务,可选
rpcsvcgssd NFS相关 关闭 关闭 NFS相关服务,可选
rsyslog 提供系统的登录档案记录 开启 开启 系统日志关键服务,必需!
syslog 系统日志相关 开启 开启  
saslauthd sasl认证服务相关 关闭 关闭  
smartd 硬盘自动检测守护进程 关闭 关闭  
spice-vdagentd   开启 开启  
sshd ssh服务端,可提供安全的shell登录 开启 开启 SSH远程登录服务,必需!
sssd   关闭 关闭  
sendmail 邮件服务 开启 自定义  
sysstat   开启 开启 一组系统监控工具的服务,常用
tcsd   关闭 关闭  
udev-post 设备管理系统 开启 开启  
wdaemon   关闭 关闭  
wpa_supplicant 无线认证相关 关闭 关闭  
xfs x windows相关 开启 关闭  
ypbind network information service客户端 关闭 关闭  
yum-updatesd yum自动升级 开启 关闭  

表格转载于:http://www.ha97.com/4815.html

查看当前开机启动服务列表

chkconfig --list | grep '3:on' | awk '{print $1}'

我的优化项目

history | grep 'chkconfig' | awk '{print $2,$3,$4}' | grep 'off'
chkconfig bluetooth off
chkconfig auditd off
chkconfig cups off
chkconfig yum-updatesd off
chkconfig smartd off
chkconfig sendmail off
chkconfig ip6tables off
chkconfig atd off
chkconfig iscsi off
chkconfig iscsid off
chkconfig microcode_ctl off

需要因机器和环境而异,仅做记录备忘。

推荐阅读

《生产服务器环境最小化安装后 Centos 6.5优化配置》http://www.lvtao.net/server/centos-server-setup.html

旁路镜像、端口镜像、旁路监控

常见的网络监控模式可以分为两种:一种是旁路监控模式,另一种是串联监控模式。

“旁路监控模式”一般是指通过交换机等网络设备的“端口镜像”功能来实现监控,在此模式下,监控设备只需要连接到交换机的指定镜像端口,所以形象的称之为“旁路监控”。

而串联模式一般是通过网关、网桥或者代理服务器的模式来进行监控,由于监控设备做为网关或者网桥串联在网络中,所以称之为“串联监控模式”。

旁路模式的优缺点

优点:

  • 旁路监控模式部署起来比较灵活方便,只需要在交换机上面配置镜像端口即可。不会影响现有的网络结构。而串联模式一般要作为网关、网桥或者代理服务器,所以需要对现有网络结构进行变动。
  • 旁路模式分析的是镜像端口拷贝过来的数据,对原始传递的数据包不会造成延时,不会对网速造成任何影响。而串联模式是串联在网络中的,那么所有的数据必须先经过监控系统,通过监控系统的分析检查之后,才能够发送到各个客户端,所以会对网速有一定的延时。
  • 旁路监控设备一旦故障或者停止运行,不会影响现有网络。而串联监控设备如果出现故障,会导致网络中断。

缺点:

  • 需要交换机或者路由支持“端口镜像”功能才可以实现监控。
  • 旁路模式采用发送RST包的方式来断开TCP连接,不能禁止UDP通讯。对于UDP应用,一般还需要在路由器上面禁止UDP端口进行配合。而串联模式不存在该问题。


串联模式的优缺点

优点:

  • 利用windows自带的“网关”、“网桥”功能即可实现,不需要硬件设备的支持。
  • 可以禁止UDP通讯数据包。

缺点:

  • 需要更改现有的网络结构。
  • 与“旁路监控”相比较,“网关”、“网桥”的配置更加复杂些。
  • 由于是串联模式,当局域网电脑台数多时,对网速有少许的影响。这个主要取决于电脑的硬件配置。

Apache 并发优化设置

1. 先查看apache的运行模式

查看命令:httpd -l
[Linux]

Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c

这里可以看到运行模式是prefork模式。

[Windows]

Compiled in modules:
core.c
mod_win32.c
mpm_winnt.c
http_core.c
mod_so.c

这里可以看到运行模式是winnt模式。

2. 修改apache 的httpd-mpm.conf 配置

[Linux]
打开 /usr/local/apache2/conf/extra/httpd-mpm.conf ,每个机器可能httpd-mpm.conf 可能不同,这里可以通过find 命令查询。
第一次打开的时候默认配置是这样的。

       <IfModule mpm_prefork_module>
           StartServers          5
           MinSpareServers       5
           MaxSpareServers      10
           MaxClients          150
           MaxRequestsPerChild   0
       </IfModule>

其中:

StartServers 表示空闲子进程的最小数量。如果当前空闲子进程数小于MinSpareServers,那么Apache将以最大美妙一个的速度产生新的子进程。此参数不要设置太大。
MinSpareServers 设置空闲子进程的最大数量。如果当前有超过MaxSpareServers 数量的空闲子进程,那么父进程将杀死多余的子进程。此参数不要设置太大,如果你讲质量设置比MinSpareServers小,Apache将会自动将其修改成“MinSpareServers + 1”。
MaxSpareServers 限定同一时间客户最大接入请求的数量(单个进程并发线程数)。任何超过MaxClients限制的请求讲进入等候队列,一旦一个连接被释放,队列中的请求将得到服务。要增大该值必须同事增大ServerLimit(ServerLimit待会再讲)。
MaxClients 表示每个子进程在其生存期内允许伺候的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为“0”,子进程将永远不会结束。
MaxRequestsPerChild 设置为0 ,可以防止(偶然)内存泄漏无限进行,从而耗尽内存。给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

[Windows]
在mpm_winnt模式下,Apache不使用prefork也不使用work工作模式,切记!
因此,我们只要找到原文件中:

<IfModule mpm_winnt_module>
    ThreadsPerChild      150
    MaxRequestsPerChild    0
</IfModule>

上述参数解释:

- ThreadsPerChild
是指一个进程最多拥有的线程数(Windows版本,貌似不可以开启多个进程),一般100-500就可以,根据服务器的具体性能来决定。
- MaxRequestsPerChild
是指一个线程最多可以接受的连接数,默认是0,就是不限制的意思,
0极有可能会导致内存泄露。所以,可以根据实际情况,配置一个比较大的值。Apache会在几个线程之间进行轮询,找到负载最轻的一个线程来接受新的连接。

3.现在看看需要怎么优化

[Linux]
连接数理论上是越大越好,但是得根据硬件,服务器的CPU,内存,带宽等因素,查看当前的apache连接数:
ps aux | grep httpd | wc -l
计算httpd 占用内存的平均数:
ps aux | grep -v grep |awk '/httpd/{sum += $6;n++};END{print sum/n}'
这个只是做个参考。计算后要减去服务器系统本身所需要的资源。
比如内存2G,减去500M留给服务器,还有1.5G,那么可得到最大连接数:在8000左右。
根据情况修改后的http-mpm.conf的prefork的配置后为:

      <IfModule mpm_prefork_module>
     StartServers          5
     MinSpareServers       5
     MaxSpareServers      10
     ServerLimit         5500
     MaxClients          5000
     MaxRequestsPerChild   100
      </IfModule>

这里重点介绍下ServerLimit,必须放到MaxClients前,值要大于MaxClients。
[Windows]
我根据机器情况修改后的配置为:

<IfModule mpm_winnt_module>
    ThreadsPerChild      300
    MaxRequestsPerChild    2000
</IfModule>

注意:
修改后,一定不要apacherestart,而是先 apache stop 然后再 apache start才可以。

CentOS编译安装MySQL5.5笔记

背景说明:前面已通过yum安装了mysql5.0,但是因为McAfee Audit Plugin插件只支持5.1、5.5、5.6,所以我们来试下重新编译安装mysql5.5 。

[root@CentOS ~]# rpm -qa | grep mysql
php-mysql-5.1.6-44.el5_10
mysql-5.0.95-5.el5_9
mysql-server-5.0.95-5.el5_9
mysql-5.0.95-5.el5_9
[root@CentOS ~]# yum remove mysql
......
Dependencies Resolved

==============================================================================
Package             Arch        Version                 Repository      Size
==============================================================================
Removing:
mysql               i386        5.0.95-5.el5_9          installed      8.0 M
mysql               x86_64      5.0.95-5.el5_9          installed      8.2 M
Removing for dependencies:
mysql-server        x86_64      5.0.95-5.el5_9          installed       22 M
perl-DBD-MySQL      x86_64      3.0007-2.el5            installed      328 k
php-mysql           x86_64      5.1.6-44.el5_10         installed      196 k

Transaction Summary
==============================================================================
Remove        5 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing        : mysql-server                                           1/5
warning: /var/log/mysqld.log saved as /var/log/mysqld.log.rpmsave
  Erasing        : mysql                                                  2/5
warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
  Erasing        : perl-DBD-MySQL                                         3/5
  Erasing        : mysql                                                  4/5
  Erasing        : php-mysql                                              5/5

Removed:
  mysql.i386 0:5.0.95-5.el5_9          mysql.x86_64 0:5.0.95-5.el5_9        

Dependency Removed:
  mysql-server.x86_64 0:5.0.95-5.el5_9  perl-DBD-MySQL.x86_64 0:3.0007-2.el5
  php-mysql.x86_64 0:5.1.6-44.el5_10  

Complete!
[root@CentOS ~]# mkdir mysql5.5_SourceCode
[root@CentOS ~]# cd mysql5.5_SourceCode/
[root@CentOS mysql5.5_SourceCode]# wget http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.39.tar.gz
......
Length: 21713567 (21M) [application/x-tar-gz]
Saving to: `mysql-5.5.39.tar.gz'

100%[====================================>] 21,713,567  7.95K/s   in 22m 45s

2014-08-15 09:52:19 (15.5 KB/s) - `mysql-5.5.39.tar.gz' saved [21713567/21713567]

接下来准备编译安装,mysql用户和组已经都有了,如果是第一次安装mysql的话就敲下面的命令添加下。
# groupadd mysql
# useradd -r -g mysql mysql

接着创建mysql目录。
# mkdir /usr/local/mysql #mysql安装目录
# mkdir /usr/local/mysqlData #数据存放目录
# chown mysql:mysql -R /usr/local/mysqlData #更改数据目录属主为mysql
# yum install -y gcc gcc-c++ libtool autoconf automake imake libxml2-devel expat-devel ncurses-devel cmake bison #配置编译所需要的环境

开始编译。

[root@CentOS mysql5.5_SourceCode]# tar -zxvf mysql-5.5.39.tar.gz
[root@CentOS mysql5.5_SourceCode]# cd mysql-5.5.39
[root@CentOS mysql-5.5.39]# cmake . \                   #开始编译
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \               #安装到/usr/local/mysql目录
-DMYSQL_DATADIR=/usr/local/mysqlData \                  #数据存放到/usr/local/mysqlData目录
-DMYSQL_UNIX_ADDR=/usr/local/mysqlData/mysqld.sock \    #sock存放到/usr/local/mysqlData目录
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                      #innoDB引擎
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8 \                                #字符集
-DDEFALUT_CHARSETS=all \                                #支持所有字符集
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DDEFAULT_COLLATION=utf8_general_ci \                   #字符集校验
-DMYSQL_USER=mysql \
-DEXTRA_CHARSETS=all \
-DMYSQL_TCP_PORT=3306 \
-DWITH_DEBUG=0
放在一行里,方便读者复制。
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysqlData -DMYSQL_UNIX_ADR=/usr/local/mysqlData/mysqld.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_CHARSETS=all -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=mysql -DEXTRA_CHARSETS=all -DMYSQL_TCP_PORT=3306 -DWITH_DEBUG=0

编译通过后,开始安装

[root@CentOS mysql-5.5.39]# make && make install

执行初始化配置脚本,创建系统自带的数据库和表
# cd /usr/local/mysql
# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysqlData --user=mysql

添加服务,并设置开机启动
# cp support-files/mysql.server /etc/init.d/mysql
# chkconfig mysql on
# service mysql start

如果启动失败,先检查下/usr/local/mysqlData目录属主是否已经修改为mysql,如检查无误,建议reboot下系统。

配置账户。
默认root没有密码,作为安全症患者这怎么可以忍受。设置密码之前,先配置下系统PATH
# vi /etc/profile
在文件末尾增加如下:
PATH=/usr/local/mysql/bin:$PATH
export PATH
保存退出,然后执行:source /etc/profile,让配置立即生效。

然后:mysql -u root 进入console控制台。

mysql> update mysql.user set password=PASSWORD('toor') where User='root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 4  Changed: 3  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> delete from mysql.user where User='';
Query OK, 2 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *2624209CC5A5CE8CF46E13D472D75A76CEBF789F |
| root | centos    | *2624209CC5A5CE8CF46E13D472D75A76CEBF789F |
| root | 127.0.0.1 | *2624209CC5A5CE8CF46E13D472D75A76CEBF789F |
| root | ::1       | *2624209CC5A5CE8CF46E13D472D75A76CEBF789F |
+------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)

如果需要外部访问,则配置iptables开启3306端口,方法如下:
打开/etc/sysconfig/iptables
在-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT,下添加:
-A INPUT -m state --state NEW -m tcp -p -dport 3306 -j ACCEPT
然后保存退出,在终端内执行下面的命令,刷新防火墙配置:
# service iptables restart

为外部访问的用户单独设置密码:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.1.%' IDENTIFIED BY 'hereispassword' WITH GRANT OPTION;

如果开放mysql外网访问,则最好修改默认端口3306,以防被扫描,弱口令最可怕!!

参考资料:
http://www.cnblogs.com/xiongpq/p/3384681.html