Linux集群和自动化维1.4.1 系统的基础优化

简介:

1.4.1 系统的基础优化


1.更新yum官方源

CentOS 6.4 系统自带的更新源速度比较慢,想必各位都有所感受,国内的速度慢得让人受不了。为了让CentOS 6.4系统使用速度更快的yum更新源,一般做运维的都会选择更换源,笔者一般会选择网易的更新源,详细步骤如下所示。

1)下载repo文件,命令如下:

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

2)备份并替换系统的repo文件,命令如下:

cd /etc/yum.repos.d/

mv CentOS-Base.repo CentOS-Base.repo.bak

mv CentOS6-Base-163.repo CentOS-Base.repo

3)执行yum源更新,命令如下:

yum clean all #清除yum缓存

yum makecache #重建缓存

yum update #升级Linux系统

增加epel源,详细步骤如下所示。

1)下载rpm文件并进行安装,命令如下:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

2)安装yum-priorities源优先级工具,命令如下:

yum install yum-priorities

yum-priorities源优先级工具是yum-plugin-priroites插件,用于给yum源划分优先级。比如说系统存在官方源、epel、puppetlabs3个yum源,这3个yum源中可能含有相同的软件,yum管理器会应用该工具来分辨安装软件时采用哪个yum源的软件。

如果说,设置官方的yum源优先级最高,epel yum源第二,puppetlabs第三(用1到99来表示,1最高),那么在安装程序的时候,就会先寻找官方的yum源。如果该源里面有所要的程序,那就停止寻找,直接安装找到的;如果没有找到,则依次寻找epel和puppetlabs的源。如果说3个yum源都含有同一个软件,那就安装优先级最高的官方yum源的。添加优先级的过程比较简单,只需要编辑对应的repo文件,在文件最后添加如下内容即可:

priority=对应优先级数字

注意,要想开启yum源的优先级功能,就要先确保priorities.conf文件里面有如下内容,需要先打开此文件,打开文件的命令如下:

vim /etc/yum/pluginconf.d/priorities.conf

确保文件里面包含如下内容:

[main]

enabled=1

2.关闭不需要的服务

众所周知,服务越少,系统占用的资源就会越少,所以应当关闭不需要的服务。建议把不需要的服务关闭掉,这样做的好处是减少内存和CPU资源占用。首先可以看下系统中存在着哪些已经启动了的服务,查看命令如下:

ntsysv

下面列出的是需要启动的服务,未列出的服务一律关闭。

crond:自动计划任务。

network:Linux系统的网络服务,很重要,若不开启此服务的话,服务器就不能联网。

sshd:OpenSSH服务器守护进程。

rsyslog:Linux的日志系统服务(CentOS 5.8下此服务名称为syslog),必须要启动。

3.关闭不需要的TTY

可用vim编辑器打开vim /etc/init/start-ttys.conf文件,文件内容如下所示:

start on stopped rc RUNLEVEL=[2345]

env ACTIVE_CONSOLES=/dev/tty[1-6]

env X_TTY=/dev/tty1

task

script

        . /etc/sysconfig/init

        for tty in $(echo $ACTIVE_CONSOLES) ; do

                [ "$RUNLEVEL" = "5" -a "$tty" = "$X_TTY" ] && continue

                initctl start tty TTY=$tty

        done

end script

这段代码使init打开了6个控制台,可分别用ALT+F1到ALT+F6进行访问。此6个控制台默认都驻留在内存中,用ps aux命令即可看到,命令如下:

ps aux | grep tty | grpe -v grep

命令显示结果如下所示:

root       1011  0.0  0.1   4060   288 tty1      Ss+  Nov25   0:00 /sbin/mingetty /dev/tty1

root      1013  0.0  0.1   4060   292 tty2     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty2

root      1015  0.0  0.1   4060   292 tty3     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty3

root      1017  0.0  0.1   4060   288 tty4     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty4

root      1019  0.0  0.1   4060   288 tty5     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty5

root      1021  0.0  0.1   4060   292 tty6     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty6

root      7467  0.0  0.1   4072   340 hvc0     Ss+  Nov29   0:00 /sbin/agetty /dev/hvc0

    38400 vt100-nav

事实上没有必要使用这么多,那如何关闭不需要的进程呢?

通常保留两个控制台就可以了,打开/etc/init/start-ttys.conf文件,注意以下代码内容:

env ACTIVE_CONSOLES=/dev/tty[1-6]

将[1-6]修改为[1-2],然后再打开/etc/sysconfig/init文件,注意以下代码内容:

ACTIVE_CONSOLES=/dev/tty[1-6]

将[1-6]修改为[1-2],然后重启机器即可。

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

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

echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf

sysctl -p

5.修改SHELL命令的history记录个数

用vim编辑器打开/etc/profile文件,关注HISTSIZE=1000:

vi /etc/profile

在找到HISTSIZE=1000后,将其改为HISTSIZE=100(这条可根据实际工作环境而定)。

不需要重启系统也可让其生效,命令如下:

source /etc/profile

6.定时校正服务器的时间

我们可以定时校正服务器的时间,命令如下:

yum install ntp

crontab -e

加入一行:

*/5 * * * * /usr/sbin/ntpdate ntp.api.bz

ntp.api.bz 是一组NTP服务器集群,之前是6台服务器,位于上海电信;现在是3台服务器,分散于上海和浙江电信,可以用dig命令查看:

dig ntp.api.bz

命令显示结果如下所示:

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.5 <<>> ntp.api.bz

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48560

;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:

;ntp.api.bz.            IN  A

;; ANSWER SECTION:

ntp.api.bz.        600 IN  A    61.153.197.226

ntp.api.bz.        600 IN  A    218.75.4.130

ntp.api.bz.        600 IN  A    114.80.81.1

;; Query time: 10 msec

;; SERVER: 202.103.24.68#53(202.103.24.68)

;; WHEN: Thu Dec 24 06:58:36 2015

;; MSG SIZE  rcvd: 76

7.停止IPv6网络服务

在CentOS 6.4默认的状态下,IPv6是被启用的,可用如下命令查看:

lsmod | grep ipv6

命令显示结果如下:

nf_conntrack_ipv6       8748  2

nf_defrag_ipv6         11182  1 nf_conntrack_ipv6

nf_conntrack           79357  2 nf_conntrack_ipv6,xt_state

ipv6                  321422  23 ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

有些网络和应用程序还不支持IPv6,因此,禁用IPv6可以说是一个非常好的选择,以加强系统的安全性,并提高系统的整体性能。不过,首先要确认一下IPv6是不是处于被启动的状态,命令如下:

ifconfig -a ← 列出全部网络接口信息

命令显示结果如下所示:

eth0      Link encap:Ethernet  HWaddr 00:16:3E:7F:67:C3 

          inet addr:192.168.1.207  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::216:3eff:fe7f:67c3/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:405835 errors:0 dropped:0 overruns:0 frame:0

          TX packets:197486 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:327950786 (312.7 MiB)  TX bytes:17186162 (16.3 MiB)

          Interrupt:24

 

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

然后修改相应的配置文件,停止IPv6,命令如下:

echo "install ipv6 /bin/true" > /etc/modprobe.d/disable-ipv6.conf

#每当系统需要加载IPv6模块时,强制执行/bin/true来代替实际加载的模块

echo "IPV6INIT=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0

#禁用基于IPv6网络,使之不会被触发启动

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

要调整一下Linux的最大文件打开数,否则运行Squid服务的机器在高负载时执行性能将会很差;另外,在Linux下部署应用时,有时候会遇上“Too many open files”这样的问题,这个值也会影响服务器的最大并发数。其实Linux是有文件句柄限制的,但默认值不是很高,一般是1024,生产服务器很容易就会达到这个值,所以需要改动此值。

下面打开/etc/security/limit.conf命令,在最后一行添加如下命令:

* soft nofile 65535

* hard nofile 65535

正解的做法应该是除了以上步骤之外,还要在系统的/etc/rc.local文件里添加如下内容:

ulimit -SHn 65535

另外,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

在线上环境找一台cms业务机器,执行此脚本,显示结果如下所示:

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files 

9.启动网卡

在配置CentOS 6.4的网卡IP地址时,容易忽略的一项是Linux在启动时未启动网卡,其后果很明显,那就是该Linux机器永远也没有IP地址。下面是一台线上环境服务器网卡/etc/sysconfig/network-scripts/ifcfg-eth0文件的配置内容:

DEVICE=eth0

BOOTPROTO=static

HWADDR=00:14:22:1B:71:20

IPV6INIT=no

IPV6_AUTOCONF=yes

ONBOOT=yes   -->此项一定要记得更改为yes,它会在系统引导时就启动网卡设备

NETMASK=255.255.255.192

IPADDR=203.93.236.146

GATEWAY=203.93.236.129

TYPE=Ethernet

PEERDNS=yes   -->允许用从DHCP处获得的DNS覆盖本地的DNS

USERCTL=no    -->不允许普通用户修改网卡

10.关闭写磁盘I/O功能

Linux文件默认有3个时间,分别如下所示。

atime:对此文件的访问时间。

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

mtime:此文件的修改时间。

如果有多个小文件(比如Web服务器的页面上有多个小图片),通常是没有必要记录文件的访问时间的,这样就可以减少写磁盘的I/O,可这要如何配置呢?

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

/dev/sda5 /data/pics ext3 noatime,nodiratime 0 0

这样文件被访问时就不会再产生写磁盘的I/O了。

11.修改SSH登录配置

SSH服务配置优化,请保持机器中至少包含一个具有sudo权限的用户,下面的配置会禁止root远程登录,代码内容如下所示:

sed -i 's@#PermitRootLogin yes@PermitRootLogin no@' /etc/ssh/sshd_config #禁止root远程登录

sed -i 's@#PermitEmptyPasswords no@PermitEmptyPasswords no@' /etc/ssh/sshd_config  #禁止空密码登录

sed -i 's@#UseDNS yes@UseDNS no@' /etc/ssh/sshd_config /etc/ssh/sshd_config #关闭    SSH反向查询,以加快SSH的访问速度

12.增加具有sudo权限的用户

添加用户的步骤和过程比较简单(这里略过),由于系统已经禁止了root远程登录,因此需要一个具有sudo权限的admin用户,权限跟root相当,这里用vim命令,在打开的/etc/sudoers文件内容里添加如下内容:

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

然后添加如下内容:

admin   ALL=(ALL)       ALL

如果在进行sudo切换时不想输入密码,可以做如下更改:

admin  ALL=(ALL) NOPASSWD:ALL

相关文章
|
4天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
110 78
|
7天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
36 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
3天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
38 13
|
15天前
|
存储 缓存 网络协议
Linux操作系统的内核优化与性能调优####
本文深入探讨了Linux操作系统内核的优化策略与性能调优方法,旨在为系统管理员和高级用户提供一套实用的指南。通过分析内核参数调整、文件系统选择、内存管理及网络配置等关键方面,本文揭示了如何有效提升Linux系统的稳定性和运行效率。不同于常规摘要仅概述内容的做法,本摘要直接指出文章的核心价值——提供具体可行的优化措施,助力读者实现系统性能的飞跃。 ####
|
4天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
16 0
|
15天前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。
|
Linux 网络安全 数据安全/隐私保护
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
95 8
|
1月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
260 6
下一篇
DataWorks