linux centos7 系統(tǒng)內(nèi)核參數(shù)調(diào)優(yōu)與tomcat nginx zabbix mysql php總結(jié)

cat /etc/sysctl.conf

CTCDN系統(tǒng)優(yōu)化參數(shù)

關(guān)閉ipv6

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

避免放大攻擊

net.ipv4.icmp_echo_ignore_broadcasts = 1

開啟惡意icmp錯誤消息保護(hù)

net.ipv4.icmp_ignore_bogus_error_responses = 1

關(guān)閉路由轉(zhuǎn)發(fā)

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

開啟反向路徑過濾

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

處理無源路由的包

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0

關(guān)閉sysrq功能

kernel.sysrq = 0

core文件名中添加pid作為擴(kuò)展名

kernel.core_uses_pid = 1

開啟SYN洪水攻擊保護(hù)

net.ipv4.tcp_syncookies = 1

修改消息隊列長度

kernel.msgmnb = 65536

kernel.msgmax = 65536

設(shè)置最大內(nèi)存共享段大小bytes

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

timewait的數(shù)量,默認(rèn)180000

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.tcp_sack = 1

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_rmem = 4096 87380 4194304

net.ipv4.tcp_wmem = 4096 16384 4194304

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

每個網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時,允許送到隊列的數(shù)據(jù)包的最大數(shù)目

net.core.netdev_max_backlog = 262144

限制僅僅是為了防止簡單的DoS 攻擊

net.ipv4.tcp_max_orphans = 3276800

未收到客戶端確認(rèn)信息的連接請求的最大值

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_timestamps = 0

內(nèi)核放棄建立連接之前發(fā)送SYNACK 包的數(shù)量

net.ipv4.tcp_synack_retries = 1

內(nèi)核放棄建立連接之前發(fā)送SYN 包的數(shù)量

net.ipv4.tcp_syn_retries = 1

啟用timewait 快速回收

net.ipv4.tcp_tw_recycle = 1

開啟重用。允許將TIME-WAIT sockets 重新用于新的TCP 連接

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_fin_timeout = 1

當(dāng)keepalive 起用的時候,TCP 發(fā)送keepalive 消息的頻度。缺省是2 小時

net.ipv4.tcp_keepalive_time = 30

允許系統(tǒng)打開的端口范圍

net.ipv4.ip_local_port_range = 1024 65000

修改防火墻表大小,默認(rèn)65536

net.netfilter.nf_conntrack_max=655350

net.netfilter.nf_conntrack_tcp_timeout_established=1200

確保無人能修改路由表

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.all.secure_redirects = 0

net.ipv4.conf.default.secure_redirects = 0
###############################################
Linux默認(rèn)是允許Ping響應(yīng)的,系統(tǒng)是否允許Ping由2個因素決定的:A、內(nèi)核參數(shù),B、防火墻,需要2個因素同時允許才能允許Ping,2個因素有任意一個禁Ping就無法Ping。

具體的配置方法如下:

A、內(nèi)核參數(shù)設(shè)置

   1、允許PING設(shè)置

    A.臨時允許PING操作的命令為:#echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all

     B.永久允許PING配置方法。

          /etc/sysctl.conf 中增加一行

net.ipv4.icmp_echo_ignore_all=1

      如果已經(jīng)有net.ipv4.icmp_echo_ignore_all這一行了,直接修改=號后面的值即可的(0表示允許,1表示禁止)。

      修改完成后執(zhí)行sysctl -p使新配置生效。

    QQ???20150309171941.png

   2、禁止Ping設(shè)置     

     A.臨時禁止PING的命令為:#echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all     

   B.永久允許PING配置方法。

          /etc/sysctl.conf 中增加一行

net.ipv4.icmp_echo_ignore_all=0

     如果已經(jīng)有net.ipv4.icmp_echo_ignore_all這一行了,直接修改=號后面的值即可的。(0表示允許,1表示禁止)

     修改完成后執(zhí)行sysctl -p使新配置生效。

     QQ???20150309173326.png

B、防火墻設(shè)置(注:此處的方法的前提是內(nèi)核配置是默認(rèn)值,也就是沒有禁止Ping)

 這里以Iptables防火墻為例,其他防火墻操作方法可參考防火墻的官方文檔。

 1、允許PING設(shè)置      

    iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

    iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

   或者也可以臨時停止防火墻操作的。

    service iptables stop

 2、禁止PING設(shè)置

    iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP

    ###################################################

接收套接字緩沖區(qū)大小的默認(rèn)值(以字節(jié)為單位)。

net.core.rmem_default = 262144

接收套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)。

net.core.rmem_max = 16777216

發(fā)送套接字緩沖區(qū)大小的默認(rèn)值(以字節(jié)為單位)。

net.core.wmem_default = 262144

發(fā)送套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)。

net.core.wmem_max = 16777216

用來限制監(jiān)聽(LISTEN)隊列最大數(shù)據(jù)包的數(shù)量,超過這個數(shù)量就會導(dǎo)致鏈接超時或者觸發(fā)重傳機(jī)制。

net.core.somaxconn = 262144

當(dāng)網(wǎng)卡接收數(shù)據(jù)包的速度大于內(nèi)核處理的速度時,會有一個隊列保存這些數(shù)據(jù)包。這個參數(shù)表示該隊列的最大值。

net.core.netdev_max_backlog = 262144

表示系統(tǒng)中最多有多少TCP套接字不被關(guān)聯(lián)到任何一個用戶文件句柄上。如果超過這里設(shè)置的數(shù)字,連接就會復(fù)位并輸出警告信息。這個限制僅僅是為了防止簡單的DoS攻擊。此值不能太小。

net.ipv4.tcp_max_orphans = 262144

表示那些尚未收到客戶端確認(rèn)信息的連接(SYN消息)隊列的長度,默認(rèn)為1024,加大隊列長度為262144,可以容納更多等待連接的網(wǎng)絡(luò)連接數(shù)。

net.ipv4.tcp_max_syn_backlog = 262144

表示系統(tǒng)同時保持TIME_WAIT套接字的最大數(shù)量。如果超過此數(shù),TIME_WAIT套接字會被立刻清除并且打印警告信息。之所以要設(shè)定這個限制,純粹為了抵御那些簡單的DoS攻擊,不過,過多的TIME_WAIT套接字也會消耗服務(wù)器資源,甚至死機(jī)。

net.ipv4.tcp_max_tw_buckets = 10000

表示允許系統(tǒng)打開的端口范圍。

net.ipv4.ip_local_port_range = 1024 65500

以下兩參數(shù)可解決生產(chǎn)場景中大量連接的服務(wù)器中TIME_WAIT過多問題。

表示開啟TCP連接中TIME_WAIT套接字的快速回收,默認(rèn)為0,表示關(guān)閉。

net.ipv4.tcp_tw_recycle = 1

表示允許重用TIME_WAIT狀態(tài)的套接字用于新的TCP連接,默認(rèn)為0,表示關(guān)閉。

net.ipv4.tcp_tw_reuse = 1

當(dāng)出現(xiàn)SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認(rèn)為0,表示關(guān)閉。

net.ipv4.tcp_syncookies = 1

表示系統(tǒng)允許SYN連接的重試次數(shù)。為了打開對端的連接,內(nèi)核需要發(fā)送一個SYN并附帶一個回應(yīng)前面一個SYN的ACK包。也就是所謂三次握手中的第二次握手。這個設(shè)置決定了內(nèi)核放棄連接之前發(fā)送SYN+ACK包的數(shù)量。

net.ipv4.tcp_synack_retries = 1

表示在內(nèi)核放棄建立連接之前發(fā)送SYN包的數(shù)量。

net.ipv4.tcp_syn_retries = 1

減少處于FIN-WAIT-2連接狀態(tài)的時間,使系統(tǒng)可以處理更多的連接。

net.ipv4.tcp_fin_timeout = 30

這個參數(shù)表示當(dāng)keepalive啟用時,TCP發(fā)送keepalive消息的頻度。默認(rèn)是2小時,若將其設(shè)置得小一些,可以更快地清理無效的連接。

net.ipv4.tcp_keepalive_time = 600

探測消息未獲得響應(yīng)時,重發(fā)該消息的間隔時間(秒)。系統(tǒng)默認(rèn)75秒。

net.ipv4.tcp_keepalive_intvl = 30

在認(rèn)定連接失效之前,發(fā)送多少個TCP的keepalive探測包。系統(tǒng)默認(rèn)值是9。這個值乘以tcp_keepalive_intvl之后決定了,一個連接發(fā)送了keepalive探測包之后可以有多少時間沒有回應(yīng)。

net.ipv4.tcp_keepalive_probes = 3

確定TCP棧應(yīng)該如何反映內(nèi)存使用,每個值的單位都是內(nèi)存頁(通常是4KB)。第一個值是內(nèi)存使用的下限;第二個值是內(nèi)存壓力模式開始對緩沖區(qū)使用應(yīng)用壓力的上限;第三個值是內(nèi)存使用的上限。在這個層次上可以將報文丟棄,從而減少對內(nèi)存的使用。示例中第一個值為7864324/1024/1024=3G,第二個值為10485764/1024/1024=4G,第三個值為1572864*4/1024/1024=6G。

net.ipv4.tcp_mem = 786432 1048576 1572864

此參數(shù)限制并發(fā)未完成的異步請求數(shù)目,應(yīng)該設(shè)置避免I/O子系統(tǒng)故障。

fs.aio-max-nr = 1048576

該參數(shù)決定了系統(tǒng)中所允許的文件句柄最大數(shù)目,文件句柄設(shè)置代表linux系統(tǒng)中可以打開的文件的數(shù)量。

fs.file-max = 6815744

第一列,表示每個信號集中的最大信號量數(shù)目。

第二列,表示系統(tǒng)范圍內(nèi)的最大信號量總數(shù)目。

第三列,表示每個信號發(fā)生時的最大系統(tǒng)操作數(shù)目。

第四列,表示系統(tǒng)范圍內(nèi)的最大信號集總數(shù)目。

(第一列)*(第四列)=(第二列)

kernel.sem = 250 32000 100 128

表示盡量使用內(nèi)存,減少使用磁盤swap交換分區(qū),內(nèi)存速度明顯高于磁盤一個數(shù)量級。

vm.swappiness = 0

CentOS 7 系統(tǒng)優(yōu)化腳本

#!/bin/bash
# set yum
yum install wget -y &>/dev/null

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
 
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
 
yum clean all
yum makecache
 
# time update
yum install ntp ntpdate -y
echo "0 0 * * * /usr/sbin/ntpdate cn.pool.ntp.org" >> /var/spool/cron/root
systemctl restart crond
 
# other
yum install net-tools telnet nmap vim -y
 
# vi setting
cat >> /etc/vimrc << EOF
set tabstop=4
set shiftwidth=4
set autoindent
syntax off
EOF
 
# open file
ulimit -SHn 65535
cat >> /etc/security/limits.conf << EOF
*   soft   nofile   65535
*   hard   nofile   65535
*   soft   nproc   65535
*   hard   nproc   65535
EOF
 
 
# close SELINUX
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
setenforce 0
 
 
# install iptables
systemctl stop firewalld
systemctl disable firewalld
yum install iptables-services -y
systemctl start iptables
systemctl enable iptables

Centos安裝Tomcat以及高并發(fā)優(yōu)化

Tomcat是一個輕量級的Web服務(wù)器。通常情況下,我們使用它運行Java代碼。它也可以被稱為Jsp、serlvet的容器。目前主流的有三個版本,Tomcat-7.0、Tomcat-8.5、Tomcat-9.0 。這里我們對Tomcat-9.0版本進(jìn)行安裝與調(diào)優(yōu)。

一、 安裝包及依賴環(huán)境下載

1、Tomcat-9.0安裝包下載

官網(wǎng)地址:點擊下載

在這里插入圖片描述

Shell命令

wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.30/bin/apache-tomcat-9.0.30.tar.gz

2、JDK1.8安裝

Tomcat作為一個web容器,運行需要Jdk環(huán)境。同時,我們使用的Tomcat-9.0版本需要Jdk1.8版本的,在上一篇文章 《Centos安裝數(shù)據(jù)庫讀寫分離中間件Mycat》中有介紹JDK1.8的安裝方式,需要安裝的可以查看。這里不多做敘述。

3、cronolog日志切割工具安裝

cronolog是一個日志切割工具,可以將Tomcat的catalina.out日志按天進(jìn)行切割,并輸出到指定的位置。安裝配置比較方便,下載完成后,解壓編譯一下即可使用。 該地址可能會訪問不通。原因不詳,你應(yīng)該有辦法。得到安裝包后進(jìn)行解壓,然后進(jìn)入解壓后的目錄,按以下順序執(zhí)行命令即可。

 wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
 tar xf cronolog-1.6.2.tar.gz
 cd cronolog-1.6.2
 ./configure
 make && make install

編譯完成后,會在默認(rèn)路徑 /usr/local/sbin/ 下生成兩個文件,其中cronolog為可執(zhí)行文件,給予執(zhí)行權(quán)限。

image

chmod +x /usr/local/sbin/cronolog

二、安裝Tomcat

Tomcat安裝方式比較簡單,解壓后更改一下配置參數(shù)即可使用。如果想要運行多個實例,只需要更改不同的端口,日志輸出路徑即可。需要注意的是,有三個端口需要更改(8005、8080、8009)。

1、解壓安裝

tar xf apache-tomcat-9.0.30.tar.gz
mv apache-tomcat-9.0.30 tomcat

2、建立Tomcat用戶

Tomcat服務(wù)啟動使用root用戶不安全,我們給它建立個tomcat啟動用戶。同時,需要注意的是將啟動涉及到的目錄都要賦予tomcat用戶權(quán)限。

useradd tomcat  
chown -R tomcat.tomcat /data/tomcat/
chown -R tomcat.tomcat /data/logs/  ##日志輸出目錄 

2、修改日志輸出路徑

cd tomcat
vim bin/catalina.sh


修改前

logs目錄換成你需要輸出的目錄,我將它輸出到 /data/logs 里。

修改后

3、啟動服務(wù)

以tomcat用戶啟動服務(wù)

su - tomcat -c "/data/tomcat/bin/start.sh"

啟動成功


在這里插入圖片描述

4、訪問測試

在/data/tomcat/webapps/ROOT/目錄下寫個index.html測試頁面,請求一下。

vim /data/tomcat/webapps/ROOT/index.html

#
<h1> Test Page </h1>
:wq 

curl http://127.0.0.1:8080


在這里插入圖片描述
三、服務(wù)優(yōu)化

不長篇大論,只介紹幾種實用的優(yōu)化方式,線上環(huán)境實際使用的。

1、啟動優(yōu)化

Tomcat啟動慢是通病,網(wǎng)上有多種提高啟動速度的方式。我一直使用的是增加熵池隨機(jī)數(shù)的方式。效果比較明顯,安裝rng-tools服務(wù)來增加熵池隨機(jī)數(shù)。

yum -y install rng-tools
systemctl start rngd
systemctl status rngd

服務(wù)已運行


在這里插入圖片描述

2、啟動內(nèi)存分配

還是找到tomcat/bin/catalina.sh 啟動程序,在程序里添加以下內(nèi)容即可。具體參數(shù),按自己服務(wù)器配置設(shè)置。如果單跑tomcat服務(wù),可適當(dāng)提高。

vim /data/tomcat/bin/catalina.sh
#
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m
:wq

在這里插入圖片描述

參數(shù)解析:
-Xms:占用系統(tǒng)的最小內(nèi)存
-Xmx:占用系統(tǒng)的最大內(nèi)存
-XX:PermSize:最小棧內(nèi)存大小
-XX:MaxPermSize:最大棧內(nèi)存大小。

3、高并發(fā)配置優(yōu)化

通常情況下,tomcat默認(rèn)開啟的等待線程為10個,最大線程為200個。顯然無法滿足并發(fā)情況。在這里,對其配置文件server.xml進(jìn)行優(yōu)化。有兩種參數(shù)調(diào)整方式。
配置文件位置:/data/tomcat/conf/server.xml
(1)Executor 線程池配置(默認(rèn)是注釋的),然后Connector段引用定義的線程池Name。


在這里插入圖片描述

(2)Connector段直接配置。


在這里插入圖片描述

我們直接使用第二種方法,在connnector段進(jìn)行配置。
增加參數(shù):
protocol=“org.apache.coyote.http11.Http11NioProtocol” ##工作模式為Nio模式,高效的處理并發(fā)。
maxThreads=“500” ##最大線程開啟。
acceptCount=“1000” ##指定當(dāng)所有可以使用的處理請求的線程數(shù)都被使用時,可以放到處理隊列中的請求數(shù),超過這個數(shù)的請求將不予處理。

更改后的配置:


在這里插入圖片描述

在這里沒有增加太多的參數(shù),只增加了有效的兩個。

4、ab測試比較

調(diào)整參數(shù)前:


在這里插入圖片描述
在這里插入圖片描述

對服務(wù)器進(jìn)行并發(fā)壓測。不斷增加并發(fā),在增長到242個線程時,停止增加。

調(diào)整參數(shù)后:


在這里插入圖片描述
在這里插入圖片描述

線程數(shù)已開啟到542個,同時執(zhí)行速率也明顯提高。

如果服務(wù)器CPU性能較好,可適當(dāng)增加最大線程數(shù),但由于linux內(nèi)核原因,對于線程數(shù)支持有限。所以開啟1000線程以到極限。CPU上下文切換速率會受影響。500左右為較好的工作狀態(tài),再高就要考慮集群部署了。下篇文章,我們來講解Nginx反代tomcat集群架構(gòu)部署。

Nginx服務(wù)器高性能優(yōu)化---壓測單機(jī)10萬以上并發(fā)量訪問

一、簡介

通常來說,一個正常的 Nginx Linux 服務(wù)器可以達(dá)到 500000 – 600000 次/秒 的請求處理性能,如果Nginx服務(wù)器經(jīng)過優(yōu)化的話,則可以穩(wěn)定地達(dá)到 100000 次/秒 的處理性能。
這里用的是vmware虛擬機(jī)環(huán)境,配置是6核、4G內(nèi)存的配置、CentOS 7 系統(tǒng)。
文章參考以下安裝方式的Nginx 1.18.0
https://blog.csdn.net/qq_32415063/article/details/105888217

二、解決問題點

1、nginx接受的tcp連接多,能否建立起來?
2、nginx響應(yīng)過程,要打開許多文件,能否打開?

三、添加nginx狀態(tài)信息查看

打開nginx的狀態(tài)連接信息:

[root@localhost ~]#vi /appdata/nginx/conf/nginx.conf

在server里添加如下信息

 location /status
        {
            stub_status on;
            access_log off;
        }

如下圖


在這里插入圖片描述

重載配置

[root@localhost ~]#systemctl reload nginx

訪問地址 http://機(jī)器ip地址/status,出現(xiàn)如下信息


在這里插入圖片描述

四、優(yōu)化步驟

1、Nginx的CPU配置

獲取cpu核心數(shù)

[root@localhost conf]# grep processor /proc/cpuinfo | wc -l

比如6核配置:

worker_processes 6;
worker_cpu_affinity 0001 0010 0100 1000 1001 10010;

比如8核配置:

worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 0000100000010000 00100000 01000000 10000000;

我這里是六核,修改nginx配置

[root@localhost conf]# vi /appdata/nginx/conf/nginx.conf

如圖所示:


在這里插入圖片描述

http模塊新增以下參數(shù)

    sendfile        on;
    tcp_nopush      on;
    client_max_body_size 1024m;
    client_body_buffer_size 10m;
    client_header_buffer_size 10m;
    proxy_buffers 4 128k;
    proxy_busy_buffers_size 128k;
    open_file_cache max=102400 inactive=20s;
    #這個將為打開文件指定緩存,默認(rèn)是沒有啟用的,max指定緩存數(shù)量,建議和打開文件數(shù)一致,inactive是指經(jīng)過多長
時間文件沒被請求后刪除緩存。
    open_file_cache_valid 30s;
    keepalive_timeout  60;

在這里插入圖片描述
2、Linux系統(tǒng)參數(shù)修改
[root@localhost conf]# vi /etc/sysctl.conf

配置如下

vm.swappiness=0
#增加tcp支持的隊列數(shù)
net.ipv4.tcp_max_syn_backlog = 262144
#減少斷開連接時 ,資源回收
net.ipv4.tcp_max_tw_buckets = 8000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
#改變本地的端口范圍
net.ipv4.ip_local_port_range = 1024 65535
#對于只在本地使用的數(shù)據(jù)庫服務(wù)器
net.ipv4.tcp_fin_timeout = 1
#端口監(jiān)聽隊列
net.core.somaxconn=65535
#接受數(shù)據(jù)的速率
net.core.netdev_max_backlog=65535
net.core.wmem_default=87380
net.core.wmem_max=16777216
net.core.rmem_default=87380
net.core.rmem_max=16777216
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144

生效參數(shù)

[root@localhost conf]# sysctl  -p

系統(tǒng)連接數(shù)的優(yōu)化

[root@localhost conf]# vi /etc/security/limits.conf

最后添加如下

*               soft    nofile           65535
*               hard    nofile           65535
*               soft    noproc           65535
*               hard    noproc           65535

設(shè)置連接數(shù)最大

[root@localhost conf]#  ulimit -n 65536

壓測10萬并發(fā) (Apache ab 測試工具)安裝方式參考鏈接:
https://blog.csdn.net/qq_32415063/article/details/105896406

[root@localhost ~]# ab -n 200000 -c 5000 http://192.168.23.129:80/index.html

結(jié)果如下

Server Software:        nginx/1.18.0
Server Hostname:        192.168.23.129
Server Port:            80

Document Path:          /index.html
Document Length:        612 bytes

Concurrency Level:      5000
Time taken for tests:   82.459 seconds
Complete requests:      200000
Failed requests:        0
Write errors:           0
Total transferred:      168999155 bytes
HTML transferred:       122399388 bytes
Requests per second:    2425.44 [#/sec] (mean)
Time per request:       2061.482 [ms] (mean)
Time per request:       0.412 [ms] (mean, across all concurrent requests)
Transfer rate:          2001.45 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  875 2739.5     78   31732
Processing:     3  209 722.7     77   61598
Waiting:        0  206 709.2     76   36979
Total:          3 1084 2849.8    180   68689

Percentage of the requests served within a certain time (ms)
  50%    180
  66%    458
  75%   1130
  80%   1169
  90%   3102
  95%   3552
  98%   7512
  99%  15209
 100%  68689 (longest request)

zabbix:性能優(yōu)化

zabbix性能低下的表現(xiàn)如下:

  • zabbix隊列有太多被延遲的item,可以通過administration-queue查看
  • zabbix繪圖中經(jīng)常出現(xiàn)斷圖,一些item沒有數(shù)據(jù)
  • 帶有nodata()函數(shù)的觸發(fā)器出現(xiàn)flase
  • 前端頁面無響應(yīng),或者響應(yīng)慢

解決方案如下:

  • 不要使用默認(rèn)的模板,使用自己定制的模板
  • 數(shù)據(jù)庫調(diào)優(yōu)
  • 架構(gòu)優(yōu)化,如使用 分布式,個服務(wù)器功能獨立
  • Item 、Trigger調(diào)優(yōu)
  • 變換更好的硬件

一:性能優(yōu)化的依據(jù)

對zabbix server本身進(jìn)行監(jiān)控,選擇zabbix-server的監(jiān)控模板Template APP Zabbix Server。
然后看到zabbix-server內(nèi)部監(jiān)控情況:


在這里插入圖片描述

通過上面的圖,我們可以發(fā)現(xiàn)監(jiān)控的指標(biāo)有剩余的容量、性能這些。通過這些我們可以知道zabbix性能的瓶頸在哪里。例如:如果剩余的容量很小了,我們就可以調(diào)大zabbix_server.conf中的緩存參數(shù),直到剩余的容量變大。

二:zabbix配置文件的參數(shù)優(yōu)化

下面就是zabbix_server.conf文件內(nèi)容

#通過日志可以分析當(dāng)前服務(wù)狀態(tài)。
LogFile=/tmp/zabbix_server.log  #日志文件路徑。
LogFileSize=1   #日志文件最大值(MB),超過則滾動,設(shè)為0表示不回滾。
DebugLevel=3    #調(diào)試日志級別:
#   0 - Zabbix進(jìn)程啟停基本信息。
#   1 - 嚴(yán)重信息。
#   2 - 錯誤信息。
#   3 - 警告。
#   4 - 調(diào)試模式。
#   5 - 調(diào)試模式-加強(qiáng)版。

#數(shù)據(jù)庫配置,若數(shù)據(jù)庫與服務(wù)器在同一機(jī)器上,使用socket模式可以提高訪問速度。
DBSocket=/tmp/mysql.sock

#輪詢進(jìn)程數(shù),通過并發(fā)來提高輪詢或者捕獲的效率,同時用來避免poller busy問題,根據(jù)CPU數(shù)量與系統(tǒng)負(fù)載綜合調(diào)優(yōu)。
StartPollers=80 #基本輪詢進(jìn)程數(shù),范圍0-1000。
StartIPMIPollers=0  #IPMI輪詢進(jìn)程數(shù),若無智能卡監(jiān)控,可置為0。
StartPollersUnreachable=1   #不可達(dá)主機(jī)的輪詢進(jìn)程數(shù),包括IPMI和JAVA。
StartTrappers=1 #捕獲模式進(jìn)程數(shù),若無active模式的客戶端,則可減小該進(jìn)程。
StartPingers=20 #ICMP ping數(shù)量,當(dāng)大量使用ping用于心跳檢測時,可適量增加。
StartDiscoverers=1  #自動發(fā)現(xiàn)實例數(shù),若關(guān)閉此功能則減少該數(shù)量。
StartHTTPPollers=7  #HTTP輪詢實例數(shù),當(dāng)使用到內(nèi)置的WEB監(jiān)測時,適量增加該值。
StartTimers=1   #定時器實例數(shù)。
StartEscalators=20  #擴(kuò)展實例數(shù)。
StartDBSyncers=20 #DB同步器線程數(shù)。
StartJavaPollers=5 #JAVA輪詢實例,當(dāng)大量監(jiān)控JMX時需要增加此項。
StartProxyPollers=1 #代理輪詢線程。

#緩存配置
CacheSize=8M    #128K-8G,緩存配置項的大小,用于存儲 host, item, trigger 數(shù)據(jù)。監(jiān)控項
CacheUpdateFrequency=60 #提交緩存頻率。
HistoryCacheSize=16M    #歷史緩存大小。
HistoryIndexCacheSize=4M    #歷史索引緩存大小。
TrendCacheSize=4M   #趨勢緩存大小。
ValueCacheSize=8M   #歷史項目值緩存,設(shè)為0表示禁用項目值緩存,history value 緩存大小,當(dāng)緩存超標(biāo)了,將會每隔 5 分鐘往 server 日志里面記錄。

#用戶配置
AllowRoot=0 #是否允許使用 root 啟動, 0:不允許, 1:允許,默認(rèn)情況下她會使用 zabbix 用戶來啟動 zabbix 進(jìn)程。
User=zabbix #服務(wù)使用的用戶。

#超時配置
Timeout=4   #端探測超時時間。
TrapperTimeout=300  #捕捉器超時時間。
UnreachablePeriod=45    #不可達(dá)時間,超過視為不可達(dá)。
UnavailableDelay=60 #不可達(dá)期間嘗試周期。
UnreachableDelay=15 #不可用期間嘗試周期。
HousekeepingFrequency=1 #housekeeping 數(shù)據(jù)歸檔周期(h),housekeep 執(zhí)行頻率,默認(rèn)每小時回去刪除一些過期數(shù)據(jù)。如果 server 重啟,那么 30 分鐘之后才執(zhí)行一次,接下來,每隔一小時在執(zhí)行一次。。
MaxHousekeeperDelete=5000   #housekeeper表記錄,一次刪除的數(shù)據(jù)不能大于 MaxHousekeeperDelete。
SenderFrequency=30  #Zabbix嘗試發(fā)送未發(fā)送數(shù)據(jù)頻率,5-3600s。

就可以根據(jù)自己的需要按照上面的內(nèi)容進(jìn)行配置。

三:zabbix的架構(gòu)優(yōu)化

常用的zabbix架構(gòu):(說明:Zabbix最簡單的架構(gòu),常用于監(jiān)控主機(jī)比較少的情況下。)


在這里插入圖片描述

分布式架構(gòu):Server-Proxy-Agentd模式
說明:Zabbix分布式架構(gòu),常用于監(jiān)控主機(jī)比較多的情況下,使用Zabbix Proxy進(jìn)行分布式監(jiān)控,有效的減輕了Zabbix Server端的壓力。


在這里插入圖片描述

四:Items工作模式及Trigger的優(yōu)化

zabbix中的item默認(rèn)的工作模式是被動模式,可以通過設(shè)置主動模式來提高Server的性能。
Trigger中正則表達(dá)式函數(shù)last()、nodata()的速度是最快的,min()、max()、avg()是最慢的,盡量使用速度快的函數(shù)。

五:zabbix的數(shù)據(jù)庫優(yōu)化

數(shù)據(jù)庫優(yōu)化的方法有:

  • 對數(shù)據(jù)庫軟件本身的優(yōu)化。采用更高性能的數(shù)據(jù)庫版本
  • 對數(shù)據(jù)庫本身的參數(shù)進(jìn)行調(diào)優(yōu)配置
  • 對zabbix數(shù)據(jù)庫結(jié)構(gòu)進(jìn)行優(yōu)化,例如:對history.、trends.等表進(jìn)行分表操作,會很大的提高數(shù)據(jù)庫的性能。

配置數(shù)據(jù)庫本身的參數(shù):

  • innodb_buffer_pool_size - 如果你有一個專屬的 MySQL 服務(wù)器,盡可能設(shè)置的越高越好(上限是整個可用內(nèi)存的 75% 左右),否則,你將同服務(wù)器上的其他進(jìn)程平衡它。但是如果它僅僅是 zabbix 服務(wù)器,我依然建議設(shè)置的比較高,接近總的內(nèi)存的 75%。

  • innodb_buffer_pool_instances - 在 MySQL 5.5, 設(shè)置它為 4, 在 MySQL 5.6 – 設(shè)置它為 8 或者甚至是 16。

  • innodb_flush_log_at_trx_commit = 0 - 這是折中的顯著改善寫入吞吐量的方案,特別是你沒有一個非易失性高速緩存的磁盤子系統(tǒng)。基本上你引發(fā)的是在 MySQL 或是服務(wù)器 crash 時的 1s 的寫損失。很多網(wǎng)站的實際運行它(很多網(wǎng)站依然運行在 MyISAM 上),我十分確定這不是一個 Zabbix 設(shè)置問題。

  • innodb_flush_method = O_DIRECT - 如果你是運行在 Linux,設(shè)置它。

  • innodb_log_file_size - 你想要這些事務(wù)日志(默認(rèn)是有兩份)保持 1 - 2 小時有價值的寫入數(shù)據(jù)。為了做決定,你可能需要看下你的 MySQL 服務(wù)器的 Zabbix graphs,但是你也可以從 mysql 命令行運行以下的命令:

      mysql> pager grep seq; show engine innodb statusG select     sleep(3600); show engine innodb statusG PAGER set to     'grep seq'
      Log sequence number 8373513970951
    
    


    Log sequence number 8373683996767

這兩個數(shù)字的不同的之處就是 InnoDB 在上一個小時寫入的字節(jié)數(shù)。因此在以上的服務(wù)器,我將設(shè)置 innodb_log_file_size=128M 并且以 256M 日志大小空間結(jié)束以允許我存儲超過 1 個小時有價值的寫入數(shù)據(jù)到事務(wù)日志中(See this on changing the log file size if you run MySQL 5.5 or earlier)

  • innodb_read_io_threads, innodb_write_io_threads - 不要深思這些,它們不像看起來那么重要,特別是如果你使用異步 IO(你可以通過在 mysql cli 運行 “show global variables like ‘innodb_use_native_aio’” 來檢查)。在 MySQL 5.5 和 5.6 你通常想使用異步 IO(AIO),因此檢查 mysql log 來明白為什么。如果沒有,那就是說,如果你沒有使用 AIO 并且不準(zhǔn)備使用,僅僅設(shè)置這些值為 8 即可。

  • innodb_old_blocks_time = 1000 - 這個可以幫助你防止 由于偶爾的 scans 造成的 buffer pool 污染。這個目前在 MySQL 5.6 中是默認(rèn)的(在 5.5,需要明確設(shè)置)。

  • innodb_io_capacity - 設(shè)置這個是為了你的磁盤 IO 子系統(tǒng)能處理更多的寫 iops。對于 SSDs,這個應(yīng)該最少為幾千(2000 可能是一個好的開始),然而對于一些旋轉(zhuǎn)磁盤值稍微有點低 - 500-800,依賴于磁盤數(shù)量。對于今天的大多數(shù)系統(tǒng),默認(rèn)的 200 明確是太低的。

  • sync_binlog=0 - 這是默認(rèn)設(shè)置,但以防萬一它是大于 0,關(guān)閉它,除非你運行的不是 Zabbix。不同步 binary logs 的代價是萬一 master 宕機(jī),副本沒有同步,但是如果由于 binary log 同步,你不斷觸及 IO 瓶頸,僅僅因為你想避免每五年一次同步到備機(jī)的麻煩,當(dāng) master 宕機(jī)了,你應(yīng)該重新考慮這個選項。

  • query_cache_size=0, query_cache_type=0 - 這是禁止查詢緩存。大部分時間你不需要查詢緩存。并且如果你沒有通過這些設(shè)置在內(nèi)核中禁止它,查詢(尤其是小的)可能會受到影響,由于查詢緩存的互斥競爭。

  • sort_buffer_size, join_buffer_size, read_rnd_buffer_size - 如果你配置了這些變量,取消這些改變(僅僅移除它們或是注釋它們)。我發(fā)現(xiàn)在大多數(shù)客戶端服務(wù)器,這是失調(diào)的前三名變量。然而在大部分情況下,不改變它們是最好的。僅僅讓它們保留默認(rèn)值。

  • tmpdir - 有時候指定 tmpdir 為 /dev/shm 是一個好注意,以至于 on-disk temporary 表實際是寫入內(nèi)存中,但是在 MySQL 5.5 有一個重要的警告:如果你這樣做了,它禁用了 AIO acorss the board,因為 tmpfs 不支持 AIO。因此我將監(jiān)控在當(dāng)前 tmpdir(/tmp) 的活躍性,并且如果我發(fā)現(xiàn)它有問題的時候,切換到 /dev/shm。

zabbix數(shù)據(jù)庫進(jìn)行分表操作:
MySQL 5.5為寫入工作負(fù)載留下了巨大的瓶頸 - 每個索引都有鎖定鎖定,因此當(dāng)時只有一個線程可以插入索引條目,這可能是一個重要的瓶頸。 我們通過其中一列的散列分區(qū)表獲得了2x +更好的性能,我希望隨著更多內(nèi)核的增益可以更高。

具體操作腳本github鏈接:https://github.com/itnihao/zabbix-book/blob/master/03-chapter/partitiontables.sh

六:其他優(yōu)化手段

服務(wù)器硬件
想通過幾個簡單的配置讓服務(wù)器提高成倍的性能,想法很好,但是基本不太現(xiàn)實。簡單的說,你需要搭配更好的CPU、更大的內(nèi)存,更快的硬盤:條件允許的花,可以考慮購買SSD,它比更大的cpu和更大的內(nèi)存帶來的效果更好,或者考慮使用SAS 15K硬盤,組raid等等,總之一句話,配置優(yōu)化不動的情況,增加硬件投入,別絞盡腦汁搜索:zabbix如何優(yōu)化之類的文章,你在浪費時間。

操作系統(tǒng)
使用最新的操作系統(tǒng),優(yōu)化、定制化操作系統(tǒng)內(nèi)核。應(yīng)該會有些作用,但是肯定不大。
參考博客鏈接如下:
https://sre.ink/zabbix-turn-conf/#respond

在CentOS 7下配置MySql5.7并調(diào)優(yōu)教程

安裝mysql5.7
1.下載資源包,代碼:

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

2.添加mysql社區(qū)repo通過輸入命令,代碼:

sudo rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

3.使用yum方式安裝mysql,代碼:

yum install mysql mysql-server mysql-libs mysql-server

4.啟動mysql,代碼:

service mysqld start

或者

systemctl start mysqld.service

5.查看啟動狀態(tài),代碼:

service mysqld status

mysql遠(yuǎn)程訪問連接
步驟:
1.登錄mysql,初始登錄不需要密碼:

mysql -u root -p

2.切換數(shù)據(jù)庫至mysql:

use mysql;

3.修改允許外部遠(yuǎn)程訪問:

UPDATE user SET Host = '%' WHERE User= 'root' LIMIT 1;

4.輸入如下命令讓剛才設(shè)置的命令生效:

flush privileges;

5.最后使用exit退出mysql服務(wù)即可。

我們暫時不設(shè)置密碼,因為麻煩,等會登錄會報錯說:Access denied for user ‘root’@‘localhost’(using password: YES)
現(xiàn)在Linux里面的mysql沒有密碼,但是設(shè)置好了允許外部遠(yuǎn)程訪問
但是問題就來了,在測試連接時依舊連接失敗,為什么?因為端口沒有在防火墻開放。同樣,在Linux里面開好防火墻對應(yīng)端口
代碼操作:(3306為mysql端口)8080端口也一樣

firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --zone=public --query-port=3306/tcp
systemctl start firewalld

修改mysql密碼
1.查看 mysql 初始的密碼策略
輸入語句

SHOW VARIABLES LIKE 'validate_password%';

2.首先需要設(shè)置密碼的驗證強(qiáng)度等級,設(shè)置 validate_password_policy 的全局參數(shù)為 LOW 即可,輸入設(shè)值語句

set global validate_password_policy=LOW;

3.當(dāng)前密碼長度為 8 ,如果不介意的話就不用修改了,按照通用的來講,設(shè)置為 6 位的密碼,設(shè)置 validate_password_length 的全局參數(shù)為 6 即可
輸入設(shè)值語句

set global validate_password_length=6;

4.現(xiàn)在可以為 mysql 設(shè)置簡單密碼了,只要滿足六位的長度即可
輸入修改語句

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

可以看到修改成功,表示密碼策略修改成功了。

修改配置文件

vi /etc/my.cnf

[client]
user=
password=

[mysqld]
########basic settings########
server-id = 11
port = 3306
user = mysql
bind_address =
autocommit = 0
character_set_server=utf8mb4
skip_name_resolve = 1
max_connections = 800
max_connect_errors = 1000
datadir = /data/mysql_data
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
join_buffer_size = 134217728
tmp_table_size = 67108864
tmpdir = /tmp
max_allowed_packet = 16777216
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
interactive_timeout = 1800
wait_timeout = 1800
read_buffer_size = 16777216
read_rnd_buffer_size = 33554432
sort_buffer_size = 33554432
########log settings########
log_error = error.log
slow_query_log = 1
slow_query_log_file = slow.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
long_query_time = 2
min_examined_row_limit = 100
########replication settings########
master_info_repository = TABLE
relay_log_info_repository = TABLE
log_bin = bin.log
sync_binlog = 1
gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates
binlog_format = row
relay_log = relay.log
relay_log_recovery = 1
binlog_gtid_simple_recovery = 1
slave_skip_errors = ddl_exist_errors
########innodb settings########
innodb_page_size = 8192
innodb_buffer_pool_size = 12G
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 2000
innodb_lock_wait_timeout = 5
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_log_group_home_dir = /redolog/
innodb_undo_directory = /undolog/
innodb_undo_logs = 128
innodb_undo_tablespaces = 3
innodb_flush_neighbors = 1
innodb_log_file_size = 4G
innodb_log_buffer_size = 16777216
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_thread_concurrency = 64
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 67108864
########semi sync replication settings########
plugin_dir=/usr/local/mysql/lib/plugin
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 5000

[mysqld-5.7]
innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
log_timestamps=system
transaction_write_set_extraction=MURMUR32
show_compatibility_56=on

CentOS 7 yum 安裝 PHP7.3 教程

CentOS 7 yum安裝 PHP7.3 教程

參考: https://www.mf8.biz/centos-rhel-install-php7-3/

1、首先安裝 EPEL 源:

yum install epel-release

安裝 REMI 源:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm  

2、安裝 Yum 源管理工具:

yum install yum-utils

3、安裝 PHP7.3:

yum install -y php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-pdo php73-php-pecl-crypto php73-php-pecl-mcrypt php73-php-pecl-geoip php73-php-recode php73-php-snmp php73-php-soap php73-php-xmll

安裝完成后最好重啟一下計算機(jī),不然有可能無法啟動php
設(shè)置開機(jī)啟動、運行服務(wù):

systemctl enable php73-php-fpm
systemctl start php73-php-fpm

設(shè)置 PHP
查找安裝包:

[root@xxx etc]# rpm -qa | grep 'php'
php73-php-cli-7.3.6-1.el7.remi.x86_64
php73-php-mbstring-7.3.6-1.el7.remi.x86_64
php73-php-pecl-mcrypt-1.0.2-1.el7.remi.x86_64
php73-runtime-2.0-1.el7.remi.x86_64
php73-php-pdo-7.3.6-1.el7.remi.x86_64
php73-php-bcmath-7.3.6-1.el7.remi.x86_64
php73-php-fpm-7.3.6-1.el7.remi.x86_64
php73-php-mysqlnd-7.3.6-1.el7.remi.x86_64
php73-php-snmp-7.3.6-1.el7.remi.x86_64
php73-php-gd-7.3.6-1.el7.remi.x86_64
php73-php-json-7.3.6-1.el7.remi.x86_64
php73-php-soap-7.3.6-1.el7.remi.x86_64
php73-php-recode-7.3.6-1.el7.remi.x86_64
php73-php-pecl-crypto-0.3.1-5.el7.remi.x86_64
php73-php-common-7.3.6-1.el7.remi.x86_64
php73-php-opcache-7.3.6-1.el7.remi.x86_64
php73-php-pecl-geoip-1.1.1-6.el7.remi.x86_64

找到:php73-php-fpm-7.3.6-1.el7.remi.x86_64安裝位置

[root@xxx etc]# rpm -ql php73-php-fpm-7.3.6-1.el7.remi.x86_64
/etc/logrotate.d/php73-php-fpm
/etc/opt/remi/php73/php-fpm.conf
/etc/opt/remi/php73/php-fpm.d
/etc/opt/remi/php73/php-fpm.d/www.conf
/etc/opt/remi/php73/sysconfig/php-fpm
/etc/systemd/system/php73-php-fpm.service.d
/opt/remi/php73/root/usr/sbin/php-fpm
/opt/remi/php73/root/usr/share/doc/php73-php-fpm-7.3.6
/opt/remi/php73/root/usr/share/doc/php73-php-fpm-7.3.6/php-fpm.conf.default
/opt/remi/php73/root/usr/share/doc/php73-php-fpm-7.3.6/www.conf.default
/opt/remi/php73/root/usr/share/fpm
/opt/remi/php73/root/usr/share/fpm/status.html
/opt/remi/php73/root/usr/share/licenses/php73-php-fpm-7.3.6
/opt/remi/php73/root/usr/share/licenses/php73-php-fpm-7.3.6/fpm_LICENSE
/opt/remi/php73/root/usr/share/man/man8/php-fpm.8.gz
/usr/lib/systemd/system/php73-php-fpm.service
/var/opt/remi/php73/lib/php/opcache
/var/opt/remi/php73/lib/php/session
/var/opt/remi/php73/lib/php/wsdlcache
/var/opt/remi/php73/log/php-fpm
/var/opt/remi/php73/run/php-fpm

查找php.ini位置:

[root@xxx etc]# find /etc/opt/remi/php73 -name php.ini
/etc/opt/remi/php73/php.ini

編輯/etc/opt/remi/php73/php.ini替換換 ;cgi.fix_pathinfo=1 為 cgi.fix_pathinfo=0 快捷命令:

sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/opt/remi/php73/php.ini

重啟php73-php-fpm

systemctl restart php73-php-fpm

更多操作:

systemctl restart php73-php-fpm #重啟
systemctl start php73-php-fpm #啟動
systemctl stop php73-php-fpm #關(guān)閉
systemctl status php73-php-fpm #檢查狀態(tài)

查看 PHP
驗證一下是否安裝成功:

root@mf88.biz-service:~# php73 -v
PHP 7.3.0-1+(cli) (built: Dec  6 2018 20:24:55) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.0-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

更新 PHP
運行下面的命令系統(tǒng)就會更新所有可以更新的軟件包括 PHP

yum update

安裝更多組件
上面的一條命令安裝 PHP 只是安裝了部分 PHP 拓展,更多的軟件可見:

# yum search php73
Updating Subscription Management repositories.
Last metadata expiration check: 0:27:54 ago on Wed 15 May 2019 10:39:52 AM EDT.
============================================================================================= Name Exactly Matched: php73 ==============================================================================================
php73.x86_64 : Package that installs PHP 7.3
php73.x86_64 : Package that installs PHP 7.3
============================================================================================ Name & Summary Matched: php73 =============================================================================================
php73-syspaths.x86_64 : System-wide wrappers for the php73 package
php73-syspaths.x86_64 : System-wide wrappers for the php73 package
php73-scldevel.x86_64 : Package shipping development files for php73
php73-scldevel.x86_64 : Package shipping development files for php73
php73-php-zstd-devel.x86_64 : php73-php-zstd developer files (header)
php73-runtime.x86_64 : Package that handles php73 Software Collection.
php73-runtime.x86_64 : Package that handles php73 Software Collection.
php73-runtime.x86_64 : Package that handles php73 Software Collection.
php73-php-pecl-psr-devel.x86_64 : php73-php-pecl-psr developer files (header)
php73-php-pecl-psr-devel.x86_64 : php73-php-pecl-psr developer files (header)
php73-php-pecl-raphf-devel.x86_64 : php73-php-pecl-raphf developer files (header)
php73-php-pecl-raphf-devel.x86_64 : php73-php-pecl-raphf developer files (header)
php73-php-pecl-propro-devel.x86_64 : php73-php-pecl-propro developer files (header)
php73-php-pecl-yaconf-devel.x86_64 : php73-php-pecl-yaconf developer files (header)
php73-php-pecl-propro-devel.x86_64 : php73-php-pecl-propro developer files (header)
php73-php-pecl-yaconf-devel.x86_64 : php73-php-pecl-yaconf developer files (header)
php73-php-pecl-xmldiff-devel.x86_64 : php73-php-pecl-xmldiff developer files (header)
php73-php-pecl-swoole4-devel.x86_64 : php73-php-pecl-swoole4 developer files (header)
php73-php-pecl-xmldiff-devel.x86_64 : php73-php-pecl-xmldiff developer files (header)
php73-php-zephir-parser-devel.x86_64 : php73-php-zephir-parser developer files (headers)
php73-php-zephir-parser-devel.x86_64 : php73-php-zephir-parser developer files (headers)
php73-php-pecl-handlebars-devel.x86_64 : php73-php-pecl-handlebars developer files (header)
================================================================================================= Name Matched: php73 ==================================================================================================
php73-php.x86_64 : PHP scripting language for creating dynamic web sites
php73-php.x86_64 : PHP scripting language for creating dynamic web sites
php73-build.x86_64 : Package shipping basic build configuration
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內(nèi)容