精簡安裝策略:linux
- 僅安裝須要的,按需安裝,不用不裝
- 開發包,基本網絡包,基本應用包
盤系統-默認按照分區方式
數據盤單獨掛載ios
#關閉NetworkManager服務,並關閉開機啓動 [root@yangwenbo ~]# systemctl stop NetworkManager [root@yangwenbo ~]# systemctl disable NetworkManager Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service. Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service. Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service. [root@yangwenbo ~]# systemctl status NetworkManager ● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled) Active: inactive (dead) since Mon 2018-10-08 02:01:14 EDT; 18s ago Docs: man:NetworkManager(8) Main PID: 1299 (code=exited, status=0/SUCCESS) CGroup: /system.slice/NetworkManager.service └─1344 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens32.pid -lf...
若是不關閉此服務,那麼此服務會接管的Linux的網絡設置。有時候會致使修改了網卡配置文件IP,可是網卡的IP不變的狀況nginx
開啓NetworkManager服務,打開開機自啓動的命令 [root@yangwenbo ~]# systemctl start NetworkManager [root@yangwenbo ~]# systemctl enable NetworkManager
(1)臨時修改DNS設置,修改當即生效,重啓服務器或重啓網絡後恢復redis
[root@yangwenbo ~]# cat /etc/resolv.conf ; generated by /usr/sbin/dhclient-script search localdomain nameserver 192.168.200.2 #修改此條配置,DNS便可被修改。當即生效
修改的/etc/resolv.conf文件裏的域名服務器,DNS便可被修改,生效馬上
可是重啓網絡或者重啓服務器的/etc/resolv.conf裏的域名服務器設置會被網卡配置文件的設置覆蓋算法
[root@yangwenbo ~]# vim /etc/resolv.conf [root@yangwenbo ~]# cat /etc/resolv.conf ; generated by /usr/sbin/dhclient-script search localdomain nameserver 192.168.200.3 #修改了此行配置 [root@yangwenbo ~]# systemctl restart network #中間有可能會掉線 [root@yangwenbo ~]# cat /etc/resolv.conf ; generated by /usr/sbin/dhclient-script search localdomain nameserver 192.168.200.2 #配置還原了
(2)永久修改DNS設置mongodb
[root@yangwenbo ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32 TYPE=Ethernet BOOTPROTO=static DEVICE=ens32 ONBOOT=yes NM_CONTROLLED=yes IPADDR=192.168.200.141 NETMASK=255.255.255.0 GATEWAY=192.168.200.2 DNS1=192.168.200.2 #永久修改須要修改網卡配置文件本行 DNS2=202.106.0.20
Centos7.x數據庫
#永久修改主機名 [root@yangwenbo ~]# cat /etc/hostname localhost.localdomain [root@yangwenbo ~]# vim /etc/hostname [root@yangwenbo ~]# cat /etc/hostname Centos7.5 [root@yangwenbo ~]# hostname Centos7.5 [root@yangwenbo ~]# bash [root@Centos7 ~]#
#映射服務器自身的主機名 [root@Centos7 ~]# echo "127.0.0.1 Centos7" >> /etc/hosts [root@Centos7 ~]# tail -1 /etc/hosts 127.0.0.1 Centos7
請注意服務器映射本身的主機名,務必映射爲127.0.0.1不要映射成網卡的IP 這是由於不少服務的運行都要驗證自身的主機名是否被映射,否則會致使未知的故障vim
[root@Centos7 ~]# sestatus SELinux status: enabled #如下省略。。。 #永久關閉selinux開機自啓動 [root@Centos7 ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled #固然selinux開啓自啓動不能(enforcing開啓;disabled關閉) # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted #臨時關閉selinux [root@Centos7 ~]# setenforce 0
若是咱們的機房沒有硬件防火牆的話,那麼咱們必須經過的iptables對擁有公網網卡的服務器作安全centos
#防火牆配置文件/etc/sysconfig/iptables #推薦配置 iptables -P INPUT ACCEPT iptables -F iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -A INPUT -s 1.1.1.0/24 -p tcp -m tcp --dport 22 -j ACCEPT iptables -A INPUT -s 2.2.2.2/32 -p tcp -m tcp --dport 22 -j ACCEPT iptables -A INPUT -i eth1 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags PSH,ACK PSH -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
(1)登錄策略api
[root@Centos7 ~]# cp /etc/ssh/sshd_config{,.bak} #備份 #修改前 [root@Centos7 ~]# cat -n /etc/ssh/sshd_config | sed -n '17p;38p;43p;47p;65p;79p;115p' 17 #Port 22 #修改ssh鏈接端口 38 #PermitRootLogin yes #是否容許root帳號遠程登錄 43 #PubkeyAuthentication yes #是否開啓公鑰鏈接認證 47 AuthorizedKeysFile .ssh/authorized_keys #公鑰文件的放置位置 65 PasswordAuthentication yes #是否開啓密碼驗證登錄 79 GSSAPIAuthentication yes #是否關閉GSSAPI認證 115 #UseDNS yes #是否關閉DNS反向解析 #修改後 [root@Centos7 ~]# cat -n /etc/ssh/sshd_config | sed -n '17p;38p;43p;47p;65p;79p;115p' 17 Port 22221 #工做中須要設定到1萬以上的端口,避免被掃描出來。 38 PermitRootLogin yes #若是不是超大規模的服務器,爲了方便咱們能夠暫時開啓root遠程登陸 43 PubkeyAuthentication yes #開啓公鑰認證模式 47 AuthorizedKeysFile .ssh/authorized_keys #公鑰放置位置 65 PasswordAuthentication no #由於咱們開啓了root遠程登陸,所以爲了安全咱們關閉密碼認證的方式 79 GSSAPIAuthentication no #關閉GSSAPI認證,極大提升ssh鏈接速度 115 UseDNS no #關閉DNS反向解析,極大提升ssh鏈接速度
(2)設置XSHELL私鑰登錄Linux的
#查看服務器端IP [root@Centos7 ~]# hostname -I 192.168.200.141 #在Linux服務器端生成rsa密鑰對 [root@Centos7 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:niDwzrv1Xq4er0zH0FqfHpvRiCJfPUcnL3vT89ZEt0M root@Centos7.5 The key's randomart image is: +---[RSA 2048]----+ | | | | | . | | o . Eo| | o . S o +.+| | o . o * + = *.| | o o B * O +.=| | o * O . B ==| | o. oOoo + .o=| +----[SHA256]-----+
#將生成的公鑰導入到服務器端的~/.ssh/authorized_keys文件裏 [root@Centos7 ~]# cd .ssh/ [root@Centos7 .ssh]# ls id_rsa id_rsa.pub [root@Centos7 .ssh]# cat id_rsa.pub > authorized_keys [root@Centos7 .ssh]# ls authorized_keys id_rsa id_rsa.pub [root@Centos7 .ssh]# cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmNGBvYnNojir7tfB9l7N2DplsoRHeUB4747xT2q5Z3g9CvM/D5AsyFogcCPFyfXIZuNFiH2IEQOS8ZXjpNU/1jy6sUxpwld2sMXHYiP+PtQJimS568ASVS1pzhXksHcPk8yXenPId73vQX8p8H9nD5/y94UwMksC8YsnoDSW7tOUUG9vdtjZw06lUwXfAkUapT6tEb3Mq6mA2LZMDUck1NicrdbmpAdcdsFaL3mzCHqxTvt3sNIruTiE8DhtLGpYCEBpWVOJuoZ8hRQTzaMHJaF7XHf4Yw5d0m937KY16RQnTziJOEVfHEJaUmV875SUsEacHjggj5PJfxJhq6d/P root@Centos7.5
#將私鑰文件id_rsa更名爲rd_rsa_root並導出到宿主機桌面上 [root@Centos7 .ssh]# ls authorized_keys id_rsa id_rsa.pub [root@Centos7 .ssh]# mv id_rsa id_rsa_root [root@Centos7 .ssh]# ls authorized_keys id_rsa.pub id_rsa_root
查看導入到桌面上的私鑰文件
然後XSHELL顯示登錄成功!
其實這個私鑰id_rsa_root,其餘發給人做爲金鑰就均可以登錄服務器端的了
也。能夠發給其餘的Linux服務器使得他們能夠SSH登錄金鑰到192.168.200.141服務器端的
具體操做過程以下
#將桌面上的id_rsa_root私鑰文件拷貝到任意Linux服務器上 [root@yangwenbo .ssh]# ls id_rsa_root #在Linux服務器上就不能隨意更名字了。將id_rsa_root更名id_rsa [root@yangwenbo .ssh]# mv id_rsa_root id_rsa #受權600權限 [root@yangwenbo .ssh]# chmod 600 id_rsa #進行登錄測試 [root@yangwenbo .ssh]# ssh root@192.168.200.141 -p 22222 Last login: Mon Oct 8 04:52:42 2018 from 192.168.200.143 [root@Centos7 ~]# hostname -I 192.168.200.141 [root@Centos7 ~]# exit logout Connection to 192.168.200.141 closed. [root@yangwenbo .ssh]# hostname -I 192.168.200.143
XSHELL密鑰登錄服務器端的普通用戶yunjisuan
#建立用戶 [root@Centos7 ~]# useradd yunjisuan #建立普通用戶雲計算下的.ssh密鑰目錄 [root@Centos7 ~]# mkdir -p /home/yunjisuan/.ssh #受權普通用戶屬主屬組 [root@Centos7 ~]# chown yunjisuan.yunjisuan /home/yunjisuan/.ssh #.ssh目錄必須700權限 [root@Centos7 ~]# chmod 700 /home/yunjisuan/.ssh [root@Centos7 .ssh]# pwd /root/.ssh [root@Centos7 .ssh]# ll total 12 -rw-r--r--. 1 root root 396 Oct 8 03:09 authorized_keys -rw-r--r--. 1 root root 396 Oct 8 03:07 id_rsa.pub -rw-------. 1 root root 1679 Oct 8 03:07 id_rsa_root #將以前root下的authorized_keys文件拷貝過去,而後修改屬主屬組 [root@Centos7 .ssh]# cp -p authorized_keys /home/yunjisuan/.ssh/ [root@Centos7 .ssh]# chown yunjisuan.yunjisuan /home/yunjisuan/.ssh/authorized_keys [root@Centos7 .ssh]# ll /home/yunjisuan/.ssh/authorized_keys -rw-r--r-- 1 yunjisuan yunjisuan 396 Oct 8 03:09 /home/yunjisuan/.ssh/authorized_keys
最後在XSHELL端用一樣的方法遠程登陸yunjisuan用戶選擇密鑰認證方式便可。
(3)用戶權限策略
禁止根用戶遠程登陸系統,受權僅普通用戶登錄系統,須要管理員權限執行須藤便可,避免根用戶之間登錄
#以root帳號受權普通用戶yunjisuan全部權限並免輸入密碼 [root@Centos7 ~]# sed -n '93p' /etc/sudoers yunjisuan ALL=(ALL) NOPASSWD: ALL
#以yunjisuan用戶測試提權 [yunjisuan@Centos7 ~]$ sudo -l Matching Defaults entries for yunjisuan on Centos7: !visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User yunjisuan may run the following commands on Centos7: (ALL) NOPASSWD: ALL
[yunjisuan@Centos7 ~]$ ls /root/ #權限不夠 ls: cannot open directory /root/: Permission denied [yunjisuan@Centos7 ~]$ sudo ls /root/ anaconda-ks.cfg #若是ssh設置了否則root用戶遠程登陸的配置 #那麼咱們能夠經過此普通用戶面密碼方式切換成root帳戶 [yunjisuan@Centos7 ~]$ sudo su - Last login: Mon Oct 8 04:54:17 EDT 2018 from 192.168.200.143 on pts/1 [root@Centos7 ~]# ls anaconda-ks.cfg [root@Centos7 ~]# exit logout [yunjisuan@Centos7 ~]$ ls [yunjisuan@Centos7 ~]$
CentOS7.x服務器
#在CentOS7.x服務器上 #測試一下本機是否能上網 [root@Centos7 ~]# ping -c 1 www.baidu.com PING www.a.shifen.com (119.75.213.61) 56(84) bytes of data. 64 bytes from 127.0.0.1 (119.75.213.61): icmp_seq=1 ttl=128 time=7.47 ms --- www.a.shifen.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 7.475/7.475/7.475/0.000 ms
#刪除原yum本地源 [root@Centos7 ~]# cd /etc/yum.repos.d/ [root@Centos7 yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo [root@Centos7 yum.repos.d]# rm -rf *
#安裝epel源 [root@Centos7 yum.repos.d]# yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm [root@Centos7 yum.repos.d]# ls epel.repo epel-testing.repo
#下載並安裝repoforge源 [root@Centos7 yum.repos.d]# yum -y install http://repository.it4i.cz/mirrors/repoforge/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm [root@Centos7 yum.repos.d]# ls epel.repo mirrors-rpmforge mirrors-rpmforge-testing epel-testing.repo mirrors-rpmforge-extras rpmforge.repo
#清空舊yum緩存,建立新yum緩存 [root@Centos7 yum.repos.d]# yum -y clean all [root@Centos7 yum.repos.d]# yum makecache #更新系統中已經安裝的軟件包 [root@Centos7 yum.repos.d]# yum -y update
CentOS6.x服務器
#在CentOS6.x服務器上 [root@Centos6 ~]# ls /etc/yum.repos.d/ bak CentOS-Media.repo #測試一下服務器是否能上網 [root@Centos6 ~]# ping -c 1 www.baidu.com PING www.a.shifen.com (119.75.213.61) 56(84) bytes of data. 64 bytes from 127.0.0.1 (119.75.213.61): icmp_seq=1 ttl=128 time=15.2 ms --- www.a.shifen.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 1463ms rtt min/avg/max/mdev = 15.251/15.251/15.251/0.000 ms
#安裝epel源 [root@Centos6 ~]# cd /etc/yum.repos.d/ [root@Centos6 yum.repos.d]# yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm [root@Centos6 yum.repos.d]# ls bak CentOS-Media.repo epel.repo epel-testing.repo
#下載並安裝repoforge源 [root@Centos6 yum.repos.d]# yum -y install http://repository.it4i.cz/mirrors/repoforge/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm [root@Centos6 yum.repos.d]# ls bak epel.repo mirrors-rpmforge mirrors-rpmforge-testing CentOS-Media.repo epel-testing.repo mirrors-rpmforge-extras rpmforge.repo
#清空舊yum緩存,建立新yum緩存 [root@Centos6 yum.repos.d]# yum -y clean all [root@Centos6 yum.repos.d]# yum makecache #更新系統中已經安裝的軟件包 [root@Centos6 yum.repos.d]# yum -y update
推薦時間服務器:ntp.sjtu.edu.cn ntp1.aliyun.com
#安裝ntpdate時間同步客戶端 [root@Centos6 ~]# yum -y install ntpdate [root@Centos6 ~]# rpm -qa ntpdate ntpdate-4.2.6p5-1.el6.centos.x86_64 #修改時區 [root@Centos6 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #進行時間同步 [root@Centos6 ~]# ntpdate ntp1.aliyun.com 8 Oct 17:45:36 ntpdate[1573]: adjust time server 120.25.115.20 offset -0.000011 sec #將時間同步加入定時任務 [root@Centos6 ~]# echo '*/5 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn >> /var/log/ntp.log 2>&1;/sbin/hwclock -w' >> /var/spool/cron/root [root@Centos6 ~]# crontab -l */5 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn >> /var/log/ntp.log 2>&1;/sbin/hwclock -w #說明:/sbin/hwclock -w :將時鐘信息刷新到bios裏
crond的,網絡,系統日誌,sshd的,SYSSTAT
略
(1)查找大文件的方法
[root@Centos7 /]# du -sh ./* 0 ./bin 97M ./boot 0 ./dev 31M ./etc 16K ./home 0 ./lib 0 ./lib64 4.2G ./media 0 ./mnt 0 ./opt du: cannot access ‘./proc/1486/task/1486/fd/4’: No such file or directory du: cannot access ‘./proc/1486/task/1486/fdinfo/4’: No such file or directory du: cannot access ‘./proc/1486/fd/4’: No such file or directory du: cannot access ‘./proc/1486/fdinfo/4’: No such file or directory 0 ./proc 48K ./root 7.6M ./run 0 ./sbin 0 ./srv 0 ./sys 0 ./tmp 998M ./usr 759M ./var
[root@Centos7 /]# cd /usr/ [root@Centos7 usr]# du -sh ./* 65M ./bin 0 ./etc 0 ./games 36K ./include 437M ./lib 168M ./lib64 12M ./libexec 0 ./local 42M ./sbin 276M ./share 0 ./src 0 ./tmp
(2)定時任務清理的關鍵目錄路徑
/var/spool/mail/ #郵件路徑 /var/spool/postfix/maildrop #小碎片路徑
- chattr + i / etc / sudoers
- chattr + i / etc / shadow
- chattr + i / etc / passwd
- chattr + i /etc/grub.conf
[root@Centos7 ~]# ulimit -a core file size (blocks, -c) 0 #core文件的最大值爲100blocks data seg size (kbytes, -d) unlimited #進程的數據段能夠任意大 scheduling priority (-e) 0 #調度優先級 file size (blocks, -f) unlimited #文件能夠任意大 pending signals (-i) 3802 #最多有3802個待處理的信號 max locked memory (kbytes, -l) 64 #一個任務鎖住的物理內存的最大值爲64KB max memory size (kbytes, -m) unlimited #一個任務的常駐物理內存的最大值 open files (-n) 1024 #一個任務最多能夠同時打開1024個文件 pipe size (512 bytes, -p) 8 #管道的最大空間爲4096(512*8)字節 POSIX message queues (bytes, -q) 819200 #POSIX的消息隊列的最大值爲819200字節 real-time priority (-r) 0 #real-time調度優先級 stack size (kbytes, -s) 8192 #進程的棧的最大值爲8192字節 cpu time (seconds, -t) unlimited #進程使用的CPU時間 max user processes (-u) 3802 #當前用戶同時打開的進程(包括線程)的最大個數爲3802 virtual memory (kbytes, -v) unlimited #沒有限制進程的最大地址空間 file locks (-x) unlimited #所能鎖住的文件的最大個數沒有限制
須要重點關注的內核參數(1):ulimit -c
[root@Centos7 ~]# ulimit -c #查看core file size大小,默認0是關閉狀態,unlimited是沒有限制狀態 0 說明: 系統調試時用,當系統的某些進程出現問題,內部會生成一些core文件,咱們經過查看這個core文件咱們就能夠知道發生了什麼問題。具體使用在C和C++程序中,它們利用這些文件進行調試
#打開core file size無限制狀態 [root@Centos7 ~]# ulimit -c unlimited [root@Centos7 ~]# ulimit -c unlimited
須要重點關注的內核參數(2):ulimit -f
[root@Centos7 ~]# ulimit -f #系統文件的最大大小,默認unlimited是沒有限制 unlimited 說明: 控制操做系統中文本文件的大小,有時候,咱們的一些應用程序的日誌文件,若是咱們想控制日誌文件的最大的量值的話,咱們就須要對這個參數作一些限制。這個參數具體到底限制仍是不限制,要具體思考。由於若是限制文件的大小。那麼一旦到了文件設定的最大大小,應用程序就不能再寫入日誌文件了。
須要重點關注的內核參數(3):ulimit -n
[root@Centos7 ~]# ulimit -n 1024 說明: 這個參數是咱們必需要調整的參數,在生產中1024這個數值基本是不夠的。1024就表明系統的內存中同時只能放1024個文件的句柄(打開文件)。通常來講65536就夠用了。
[root@Centos7 ~]# ulimit -n 65536 [root@Centos7 ~]# ulimit -n 65536
須要重點關注的內核參數(4):ulimit -u
[root@Centos7 ~]# ulimit -u #系統用戶同時打開的進程(線程)的最大數 3802 說明: 不少程序都是用普通用戶運行的。用戶可以同時併發啓用的進程(線程)個數,就表明了咱們程序的性能,不少程序都是支持高併發的。所以,這個參數咱們是須要修改大的。通常來講65536就夠用了
[root@Centos7 ~]# ulimit -u 65536 [root@Centos7 ~]# ulimit -u 65536
- / etc / profile:全部用戶生效,永久有效;
- 〜/ .bash_profile中:當前用戶生效,永久有效;
- 直接在控制檯輸入,當前用戶有效,臨時生效;
- 在/etc/security/limits.conf:指定用戶或用戶組生效,永久生效;
#在/etc/security/limits.conf中設定對內核的修改,永久生效 [root@Centos7 ~]# tail -12 /etc/security/limits.conf #<domain> <type> <item> <value> # #* soft core 0 #* hard rss 10000 #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 #@student - maxlogins 4 # End of file 說明: <domain> 指定匹配參數修改的用戶和用戶組,*表明全部用戶; <type> 限制的類型soft軟限制,hard硬限制; <item> nproc表明最大進程數;nofile表明最大文件打開數;core表明限制內核文件大小;maxlogins表明此用戶容許登錄的最大數目 <value> 具體的限制數值 hard硬限制:用戶在任什麼時候候均可以活動的進程的最大數量,這是上限。沒有任何非root進程可以增長hard ulimit; soft軟限制:是對會話或進程實際執行的限制,但任何進程均可以將其增長到hard ulimit的最大值
#增長對系統內核參數的限制,修改完畢,退出登錄在進入便可生效 [root@Centos7 ~]# tail -4 /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536
#退出登陸後,再驗證 [root@Centos7 ~]# ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 3802 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 65536 #已經改變 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 65536 #已經改變 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
(1)tail -f /usr/local/nginx/logs/error.log#服務應用類日誌查詢
(2)tail -f / var / log / messages#系統應用類日誌查詢
(3)tail -f / var / log / secure#登陸日誌查詢
(4)dmesg#系統日誌查詢
(5)/ var / tmp,/ tmp#容易被攻擊的點查詢
(6)crontab -l,/ etc / crontab#計劃任務查詢(常常攻擊對象)
[root@Centos7 ~]# tail -1000 /var/log/secure | grep Accepted Oct 8 01:48:27 localhost sshd[1235]: Accepted password for root from 192.168.200.1 port 50704 ssh2 Oct 8 02:19:58 localhost sshd[1832]: Accepted password for root from 192.168.200.1 port 50882 ssh2 Oct 8 03:12:44 localhost sshd[11788]: Accepted password for root from 192.168.200.1 port 51149 ssh2 Oct 8 03:18:29 Centos7 sshd[907]: Accepted password for root from 192.168.200.1 port 51185 ssh2 Oct 8 03:32:35 Centos7 sshd[1103]: Accepted publickey for root from 192.168.200.1 port 51258 ssh2: RSA SHA256:niDwzrv1Xq4er0zH0FqfHpvRiCJfPUcnL3vT89ZEt0M Oct 8 03:41:10 Centos7 sshd[905]: Accepted publickey for root from 192.168.200.1 port 51326 ssh2: RSA SHA256:niDwzrv1Xq4er0zH0FqfHpvRiCJfPUcnL3vT89ZEt0M Oct 8 03:41:46 Centos7 sshd[1107]: Accepted publickey for root from 192.168.200.1 port 51331 ssh2: RSA SHA256:niDwzrv1Xq4er0zH0FqfHpvRiCJfPUcnL3vT89ZEt0M Oct 8 03:42:38 Centos7 sshd[1127]: Accepted publickey for root from 192.168.200.1 port 51341 ssh2: RSA SHA256:niDwzrv1Xq4er0zH0FqfHpvRiCJfPUcnL3vT89ZEt0M Oct 8 03:42:59 Centos7 sshd[1146]: Accepted publickey for root from 192.168.200.1 port 51352 ssh2: RSA SHA256:niDwzrv1Xq4er0zH0FqfHpvRiCJfPUcnL3vT89ZEt0M Oct 8 03:44:46 Centos7 sshd[1166]: Accepted publickey for root from 192.168.200.1 port 51355 ssh2: RSA SHA256:niDwzrv1Xq4er0zH0FqfHpvRiCJfPUcnL3vT89ZEt0M Oct 8 04:52:42 Centos7 sshd[1239]: Accepted publickey for root from 192.168.200.143 port 49638 ssh2: RSA SHA256:niDwzrv1Xq4er0zH0FqfHpvRiCJfPUcnL3vT89ZEt0M Oct 8 04:54:17 Centos7 sshd[1257]: Accepted publickey for root from 192.168.200.143 port 49640 ssh2: RSA SHA256:niDwzrv1Xq4er0zH0FqfHpvRiCJfPUcnL3vT89ZEt0M Oct 8 05:09:39 Centos7 sshd[1318]: Accepted publickey for yunjisuan from 192.168.200.1 port 51755 ssh2: RSA SHA256:niDwzrv1Xq4er0zH0FqfHpvRiCJfPUcnL3vT89ZEt0M
如何判斷多核CPU與超線程
- 頂部命令按數字1,能夠看到CPU一共有多少核
- 在/ PROC內/ cpuinfo查看並過濾
#查看/proc/cpuinfo裏部分信息 [root@Centos7 ~]# cat /proc/cpuinfo processor : 0 #CPU的線程號,過濾這個得到服務器的總線程數 vendor_id : GenuineIntel cpu family : 6 model : 61 model name : Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz stepping : 4 microcode : 0x11 cpu MHz : 2194.917 cache size : 3072 KB physical id : 0 #CPU的物理ID號。過濾這個得到服務器的物理CPU數 siblings : 1 core id : 0 #表示當前的信息出自physical id爲0的CPU上的第一個核心 cpu cores : 1 #表示當前物理physical id爲0的CPU上有4個核心 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 20 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt dtherm ida arat pln pts bogomips : 4389.83 clflush size : 64 cache_alignment : 64 address sizes : 42 bits physical, 48 bits virtual power management:
#查看物理服務器有幾個物理CPU [root@Centos7 ~]# cat /proc/cpuinfo | grep "physical id" physical id : 0 #物理id號 [root@Centos7 ~]# cat /proc/cpuinfo | grep "physical id" | uniq physical id : 0 [root@Centos7 ~]# cat /proc/cpuinfo | grep "physical id" | uniq | wc -l #服務器一共有一個物理CPU 1 #查看物理服務器的CPU的總線程數 [root@Centos7 ~]# cat /proc/cpuinfo | grep "processor" | uniq | wc -l 1 #查看物理服務器的CPU的總核心數 [root@Centos7 ~]# cat /proc/cpuinfo | grep "core id" | wc -l 1
主要消耗CPU的業務:動態Web服務,郵件服務
- 物理內存與交換的取捨
- 選擇64位的Linux操做系統
若是物理內存大於16G,那麼交換等於物理內存或者是物理內存兩倍都是能夠的。
若是物理內存小於16G,那麼交換和內存大小保持一致。
消耗內存的業務:內存數據庫(redis的/ HBase的/ mongodb的)
- RAID技術(RAID 0/1/5/10)
- SSD磁盤
消耗磁盤的業務:數據庫服務器
- 網卡/交換機的選擇:起碼千兆網卡/千兆普通交換機/萬兆核心交換機
- 操做系統雙網卡綁定:經過綁定提升網卡帶寬吞吐量
消耗帶寬的業務:分佈式文件系統,視頻業務平臺
磁盤分區,RAID設置,交換設置
- ulimit -n(文件最大打開數)
- ulimit -u(最大用戶的進程數)
- EXT4:Linux的原生態文件格式
- XFS:Centos7開始默認支持
應用建議:
讀操做頻繁,同時小文件衆多的應用:首選EXT4系統-文件
寫操做頻繁的應用,首選的xfs。
此類問題須要開發人員查看代碼,介入處理。但做爲運維人員須要給出程序問題的有力證據。
利用vmstat的命令能夠對操做系統的內存信息,進程狀態,CPU活動等進行監視。
[root@Centos7 ~]# which vmstat /usr/bin/vmstat [root@Centos7 ~]# vmstat 3 5 #每3秒刷新一次,輸出5次數據 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 810276 2124 108028 0 0 13 1 41 63 0 0 99 0 0 1 0 0 810276 2124 108060 0 0 0 0 66 82 0 0 100 0 0 0 0 0 810276 2124 108060 0 0 0 0 65 78 0 0 100 0 0 0 0 0 810276 2124 108060 0 0 0 0 64 78 0 0 100 0 0 0 0 0 810276 2124 108060 0 0 0 0 65 76 0 0 100 0 0
特效:
- r列表示運行和等待cpu時間片的進程數,這個值若是長期大於系統CPU個數,說明CPU不足,須要增長CPU
- b列表示在等待資源的進程數,好比正在等待I / O,或者內存交換等。長期大於0,那麼說明CPU不足
記憶:
- swpd列表示切換到內存交換區的內存數量(以k爲單位)。若是swpd的值不爲0,或者比較大,只要si,so的值長期爲0,這種狀況下通常不用擔憂,不會影響系統性能。
- 免費列表示當前空閒的物理內存數量(以k爲單位)
- buff列表示緩存的內存數量,通常對塊設備的讀寫才須要緩衝。
- 緩存列表示頁面緩存的內存數量,通常做爲文件系統緩存,頻繁訪問的文件都會被緩存,若是緩存值較大,說明緩存的文件數較多,若是此時IO中bi比較小,說明文件系統效率比較好。
交換
- si列表示由磁盤調入內存,也就是內存進入內存交換區的數量
- 因此列表示由內存調入磁盤,也就是內存交換區進入內存的數量
通常狀況下,SI,SO的值都爲0,若是SI,SO的值長期不爲0,則表示系統內存不足。須要增長系統內存。
IO項顯示磁盤讀寫情況
- 雙列表示從塊設備讀入數據的總量(即讀磁盤)(每秒KB)
- 柏列表示寫入到塊設備的數據重量(即寫磁盤)(每秒KB)
這裏咱們設置的雙+博參考值爲1000,若是超過1000,並且WA值較大,則表示系統磁盤IO有問題,應該考慮提升磁盤的讀寫性能。
system顯示採集間隔內發生的中斷數
- 在列表示在某一時間間隔中觀測到的每秒設備中斷數
- cs列表示每秒產生的上下文切換次數
上邊這兩個值越大,會看到由內核消耗的CPU時間會越多
CPU項顯示了CPU的使用狀態,此列是咱們關注的重點
- 咱們列顯示了用戶進程消耗的CPU時間百分比.us的值比較高時,說明用戶進程消耗的cpu時間多,可是若是長期大於50%,就須要考慮優化程序或算法。
- sy列顯示了內核進程消耗的CPU時間百分比.Sy的值比較高時,說明內核消耗的CPU資源不少。
- 美國+ SY的參考值爲80%,若是咱們+ SY大於80%說明可能存在CPU資源不足。
- d列顯示了CPU處於空閒狀態的時間百分比。
- wa列顯示了IO等待所佔用的CPU時間百分比。
- WA值越高,說明IO等待越嚴重,根據經驗,WA的參考值爲20%時,若是WA超過20%,說明IO等待嚴重,引發IO等待的緣由多是磁盤大量隨機讀寫形成的,也多是磁盤或者磁盤控制器的帶寬瓶頸形成的(主要是塊操做)
綜上所述:
在對CPU的評估中,須要重點注意的是特效項[R列的值和CPU項中咱們,SY和ID列的值
[root@Centos7 ~]# iostat -c 3 5 Linux 3.10.0-862.3.3.el7.x86_64 (Centos7.5) 2018年09月01日 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.03 0.00 0.02 0.00 0.00 99.95 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.00 0.00 100.00 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.00 0.00 100.00 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.04 0.00 0.00 99.96 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.00 0.00 100.00
[root@Centos7 ~]# uptime 00:40:01 up 2:01, 2 users, load average: 0.03, 0.05, 0.05 [root@Centos7 ~]# w 00:40:03 up 2:01, 2 users, load average: 0.03, 0.05, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 00:22 16:11 0.03s 0.03s -bash root pts/0 192.168.200.1 00:25 3.00s 0.03s 0.00s w
#查看Centos6.x的內存狀況 [root@Centos6 ~]# free -m total used free shared buffers cached Mem: 980 300 680 0 17 187 -/+ buffers/cache: 96 884 Swap: 1983 0 1983 說明: 系統可以使用的剩餘內存容量:884M ===> 系統剩餘內存 680M + buffers 17M + cached 187M 經過swap能夠看出來,交換分區使用量爲0,說明系統內存資源還很是充足。
#查看Centos7.x的內存狀況 [root@Centos7 ~]# free -m total used free shared buff/cache available Mem: 974 76 710 7 187 737 Swap: 2047 0 2047 說明: 系統剩餘內存容量:710M buffers+cache容量:187M 系統可用剩餘內存容量爲:available 737M
通常狀況咱們能夠這樣去判斷內存:
- 系統可用剩餘內存總量/系統物理內存重量> 70%時,表示系統內存資源很是充足,不影響系統性能;
- 系統可用剩餘內存總量/系統物理內存重量<20%時,表示系統內存資源緊缺,須要增長系統內存;
- 20%<系統可用剩餘內存總量/系統物理內存重量<70%時,表示系統內存資源基本能知足應用需求,暫時不影響系統性能。
此兩個命令主要用於監控所有或指定進程佔用系統資源的狀況,如CPU,內存,設備I / O
三個公用參數:-u(獲取CPU狀態), - R(獲取內存狀態), - d(獲取磁盤)
[root@Centos7 ~]# sar -u 3 #每3秒獲取一次CPU狀態信息 Linux 3.10.0-862.3.3.el7.x86_64 (Centos7.5) 2018年09月02日 _x86_64_ (8 CPU) 15時46分38秒 CPU %user %nice %system %iowait %steal %idle 15時46分41秒 all 0.00 0.00 0.04 0.00 0.00 99.96 15時46分44秒 all 0.00 0.00 0.00 0.00 0.00 100.00 [root@Centos7 ~]# sar -r 3 #每3秒獲取一次MEM狀態信息 Linux 3.10.0-862.3.3.el7.x86_64 (Centos7.5) 2018年09月02日 _x86_64_ (8 CPU) 15時47分57秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 15時48分00秒 586576 411396 41.22 2684 256608 193496 6.25 191660 103324 0 15時48分03秒 586584 411388 41.22 2684 256608 193496 6.25 191660 103324 0 說明: kbmemfree:表示空閒物理內存大小 kbmemused:表示已經使用的物理內存大小 %memused:表示已經使用內存佔總內存百分比 kbbuffers和kbcached:表示buffers和cache佔用的大小 kbcommit和%commit分別表示應用程序當前使用的內存大小和使用百分比
[root@Centos7 ~]# iostat -d 2 3 Linux 3.10.0-862.3.3.el7.x86_64 (Centos7.5) 2018年09月02日 _x86_64_ (8 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.62 16.00 6.85 207832 89039 scd0 0.02 0.23 0.00 2978 0 dm-0 0.48 15.20 6.70 197510 86991 dm-1 0.01 0.17 0.00 2228 0 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.00 0.00 0.00 0 0 scd0 0.00 0.00 0.00 0 0 dm-0 0.00 0.00 0.00 0 0 dm-1 0.00 0.00 0.00 0 0 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.00 0.00 0.00 0 0 scd0 0.00 0.00 0.00 0 0 dm-0 0.00 0.00 0.00 0 0 dm-1 0.00 0.00 0.00 0 0 說明: DEV:表示磁盤設備名稱 tps:表示每秒到物理磁盤的傳送數,也就是每秒的I/O流量。一個傳送就是一個I/O請求,多個邏輯請求能夠被合併爲一個物理I/O請求。 kB_read/s:每秒讀取的數據塊 kB_wrtn/s:每秒寫入的數據塊 kB_read:讀取的全部數據塊總數 kB_wrtn:寫入的全部數據塊總數
[root@Centos7 ~]# ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.016 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.049 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.051 ms ^C --- 127.0.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.016/0.038/0.051/0.017 ms 說明: 在這個輸出中,time值表示了兩臺主機之間的網絡延時狀況,若是值很大,則表示網絡的延時很大,單位爲毫秒。在這個輸出的最後,還有一個統計總結。packet loss表示網絡丟包率,值越小,網絡質量越高
- netstat -rn(查看路由狀況)<====> route -n
- netstat -i(查看網絡接口狀態)
[root@Centos7 ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.200.2 0.0.0.0 UG 0 0 0 ens32 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ens32 192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32 [root@Centos7 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.200.2 0.0.0.0 UG 0 0 0 ens32 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 ens32 192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32 [root@Centos7 ~]# netstat -i Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg ens32 1500 1189 0 0 0 868 0 0 0 BMRU lo 65536 70 0 0 0 70 0 0 0 LRU
跟蹤網絡路由狀態,推薦使用地鐵,動態跟蹤網絡路由,用於排除網絡問題很是方便。
#安裝命令 [root@Centos6 ~]# yum -y install traceroute mtr [root@Centos6 ~]# rpm -qa traceroute mtr traceroute-2.0.14-2.el6.x86_64 mtr-0.75-5.el6.x86_64 #traceroute追蹤到www.baidu.com的路由器 [root@Centos6 ~]# traceroute www.baidu.com traceroute to www.baidu.com (111.13.100.92), 30 hops max, 60 byte packets 1 192.168.200.2 (192.168.200.2) 0.327 ms 0.206 ms 0.172 ms 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 * * * #中間省略。。。 29 * * * 30 * * *
traceroute雖然也能追蹤數據包,可是並不能直觀的看
mtr命令-n不用主機解析-c發送數據包個數--report結果顯示,不動態
影響性能因素 | 評判標準 | 評判標準 | 評判標準 |
---|---|---|---|
好 | 壞 | 糟糕 | |
中央處理器 | 用戶%+ SYS%<70% | 用戶%+ SYS%= 85% | 用戶%+ SYS%> = 90% |
內存 | 交換輸入(si)= 0;交換輸出(so)= 0 | 每CPU 10頁/秒 | 更多交換和交換 |
磁盤 | 愛荷華州%<20% | iowait%= 35% | iowait%> = 50% |
- %用戶:表示CPU處在用戶模式下的時間百分比
- %SYS:表示CPU處在系統模式下的時間百分比
- %IOWAIT:表示CPU等待輸入輸出完成時間的百分比
- 交換:即si,表示虛擬內存的頁導入,即從SWAP DISK交換到RAM