保存nginx.conf文件,,輸入cd ..,回到/usr/local/nginx/sbin目錄下輸入./nginx啟動(dòng)nginx服務(wù),。輸入ps –ef |grep nginx查看運(yùn)行的進(jìn)程。
運(yùn)行nginx:./nginx
重啟nginx:./nginx -s reload
停止nginx:./nginx -s stop
輸入netstat –ntlp | grep nginx查看nginx的通信端口,。
輸入wget htt:\\10.190.130.78:8007就測(cè)試到配置是否成功,。
2.6.在Firewall啟動(dòng)狀態(tài)下運(yùn)行Nginx
在Firewall啟動(dòng)的情況下,其他客戶端無(wú)法訪問(wèn)到htt:\\10.190.130.78:8007,。
在Firewall中添加8007端口,,firewall-cmd –permanent–add-port=8007/tcp,然后在輸入firewall-cmd –reload,,重載成功過(guò)后,,
在輸入firewall-cmd –list-all,可顯示添加的8007端口,。
輸入netstat -ntlp | grep nginx查看nginx的占用端口
在其他客戶端中輸入wget
http://10.190.130.78:8007就可以訪問(wèn)成功,。
3.設(shè)置自定義開(kāi)機(jī)系統(tǒng)服務(wù)
CentOS 7 使用systemd替換了SysV,。Systemd目的是要取代Unix時(shí)代以來(lái)一直在使用的init系統(tǒng),兼容SysV和LSB的啟動(dòng)腳本,,而且夠在進(jìn)程啟動(dòng)過(guò)程中
更有效地引導(dǎo)加載服務(wù),。
systemd的特性有:
支持并行化任務(wù)
同時(shí)采用socket式與D-Bus總線式激活服務(wù);
按需啟動(dòng)守護(hù)進(jìn)程(daemon),;
利用 Linux 的 cgroups 監(jiān)視進(jìn)程,;
支持快照和系統(tǒng)恢復(fù);
維護(hù)掛載點(diǎn)和自動(dòng)掛載點(diǎn),;
各服務(wù)間基于依賴關(guān)系進(jìn)行精密控制,。
檢視和控制systemd的主要命令是systemctl。該命令可用于查看系統(tǒng)狀態(tài)和管理系統(tǒng)及服務(wù),。詳見(jiàn)man 1 systemctl,。
輸入vim /usr/lib/systemd/system/nginx.service進(jìn)入文件編輯。
將以下內(nèi)容拷貝到nginx.service文件中,,然后保存,。
[Unit]
Description=nginx servicedaemon
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid #nginx安裝路徑下的nginx.pid文件
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx-s reload
ExecStop=/usr/local/nginx/sbin/nginx-s stop
PrivateTep=true
[Install]
WantedBy=multi-user.target
保存文件后,啟動(dòng)nginx服務(wù)器會(huì)出現(xiàn)錯(cuò)誤,。必須要輸入systemctl daemon-reload,,重載后臺(tái)服務(wù)。
輸入systemctl daemon-reload,,重載后臺(tái)服務(wù),。可以使用systemctl命令對(duì)nginx進(jìn)行操作
如果需要更詳細(xì)的配置,,請(qǐng)參考:
https://www./software/systemd/man/systemd.service.html
使用單元
一個(gè)單元配置文件可以描述如下內(nèi)容之一:系統(tǒng)服務(wù)(.service),、掛載點(diǎn)(.mount)、sockets(.sockets),、系統(tǒng)設(shè)備(.device),、交換分區(qū)(.swap)、文件路徑(.path),、啟動(dòng)目標(biāo)(.target),、由 systemd 管理的計(jì)時(shí)器(.timer)。詳情參閱 man 5 systemd.unit,。
使用 systemctl 控制單元時(shí),,通常需要使用單元文件的全名,包括擴(kuò)展名(例如 sshd.service),。但是有些單元可以在systemctl中使用簡(jiǎn)寫方式,。
如果無(wú)擴(kuò)展名,systemctl 默認(rèn)把擴(kuò)展名當(dāng)作 .service,。例如 netcfg 和 netcfg.service 是等價(jià)的,。
掛載點(diǎn)會(huì)自動(dòng)轉(zhuǎn)化為相應(yīng)的 .mount 單元,。例如 /home 等價(jià)于 home.mount。
設(shè)備會(huì)自動(dòng)轉(zhuǎn)化為相應(yīng)的 .device 單元,,所以 /dev/sda2 等價(jià)于 dev-sda2.device,。
注: 有一些單元的名稱包含一個(gè) @ 標(biāo)記, (e.g. [email protected]): 這意味著它是模板單元[email protected] 的一個(gè)實(shí)例,。 string 被稱作實(shí)例標(biāo)識(shí)符, 在 systemctl 調(diào)用模板單元時(shí),,會(huì)將其當(dāng)作一個(gè)參數(shù)傳給模板單元,模板單元會(huì)使用這個(gè)傳入的參數(shù)代替模板中的 %I 指示符,。在實(shí)例化之前,,systemd 會(huì)先檢查 [email protected] 文件是否存在(如果存在,應(yīng)該就是直接使用這個(gè)文件,,而不是模板實(shí)例化了),。大多數(shù)情況下,包換 @ 標(biāo)記都意味著這個(gè)文件是模板,。如果一個(gè)模板單元沒(méi)有實(shí)例化就調(diào)用,,該調(diào)用會(huì)返回失敗,因?yàn)槟0鍐卧械? %I 指示符沒(méi)有被替換,。
例如:systemctl start <單元>
編寫單元文件
systemd單元文件的語(yǔ)法來(lái)源于 XDG桌面入口配置文件.desktop文件,,最初的源頭則是MicrosoftWindows的.ini文件。單元文件可以從兩個(gè)地方加載,,優(yōu)先級(jí)從低到高分別是:
/usr/lib/systemd/system/: 軟件包安裝的單元
/etc/systemd/system/: 系統(tǒng)管理員安裝的單元
注意: 當(dāng)systemd運(yùn)行在用戶模式下時(shí),,使用的加載路徑是完全不同的。
處理依賴關(guān)系
使用systemd時(shí),,可通過(guò)正確編寫單元配置文件來(lái)解決其依賴關(guān)系,。典型的情況是,單元A要求單元B在A啟動(dòng)之前運(yùn)行,。在此情況下,,向單元A配置文件中的 [Unit] 段添加 Requires=B 和 After=B 即可。若此依賴關(guān)系是可選的,,可添加 Wants=B 和 After=B,。請(qǐng)注意 Wants= 和 Requires= 并不意味著 After=,即如果 After= 選項(xiàng)沒(méi)有制定,,這兩個(gè)單元將被并行啟動(dòng)。
依賴關(guān)系通常被用在服務(wù)(service)而不是目標(biāo)(target)上,。例如,, network.target 一般會(huì)被某個(gè)配置網(wǎng)絡(luò)接口的服務(wù)引入,所以,,將自定義的單元排在該服務(wù)之后即可,,因?yàn)?network.target 已經(jīng)啟動(dòng),。
服務(wù)類型
編寫自定義的 service 文件時(shí),可以選擇幾種不同的服務(wù)啟動(dòng)方式,。啟動(dòng)方式可通過(guò)配置文件 [Service] 段中的 Type= 參數(shù)進(jìn)行設(shè)置,。
Type=simple(默認(rèn)值):systemd認(rèn)為該服務(wù)將立即啟動(dòng)。服務(wù)進(jìn)程不會(huì)fork,。如果該服務(wù)要啟動(dòng)其他服務(wù),,不要使用此類型啟動(dòng),除非該服務(wù)是socket激活型,。
Type=forking:systemd認(rèn)為當(dāng)該服務(wù)進(jìn)程fork,,且父進(jìn)程退出后服務(wù)啟動(dòng)成功。對(duì)于常規(guī)的守護(hù)進(jìn)程(daemon),,除非你確定此啟動(dòng)方式無(wú)法滿足需求,,使用此類型啟動(dòng)即可。使用此啟動(dòng)類型應(yīng)同時(shí)指定 PIDFile=,,以便systemd能夠跟蹤服務(wù)的主進(jìn)程,。
Type=oneshot:這一選項(xiàng)適用于只執(zhí)行一項(xiàng)任務(wù)、隨后立即退出的服務(wù),??赡苄枰瑫r(shí)設(shè)置 RemainAfterExit=yes 使得 systemd 在服務(wù)進(jìn)程退出之后仍然認(rèn)為服務(wù)處于激活狀態(tài)。
Type=notify:與 Type=simple 相同,,但約定服務(wù)會(huì)在就緒后向 systemd 發(fā)送一個(gè)信號(hào),。這一通知的實(shí)現(xiàn)由 libsystemd-daemon.so 提供。
Type=dbus:若以此方式啟動(dòng),,當(dāng)指定的 BusName出現(xiàn)在DBus系統(tǒng)總線上時(shí),,systemd認(rèn)為服務(wù)就緒。
Type=idle: systemd會(huì)等待所有任務(wù)(Jobs)處理完成后,,才開(kāi)始執(zhí)行idle類型的單元,。除此之外,其他行為和Type=simple 類似,。
type的更多解釋可以參考systemd.service(5),。
3.1.設(shè)置開(kāi)機(jī)服務(wù)
輸入systemctl start nginx啟動(dòng)nginx服務(wù),在輸入systemctl enable nginx 設(shè)置nginx服務(wù)為開(kāi)機(jī)啟動(dòng)服務(wù),,最后,,輸入systemctl status nginx查看nginx的運(yùn)行狀態(tài)。
3.2.停止開(kāi)機(jī)服務(wù)
輸入systemctl disable nginx停止開(kāi)機(jī)啟動(dòng)nginx服務(wù),,輸入systemctlstop nginx停止nginx服務(wù),,輸入systemctl status nginx查看nginx的運(yùn)行狀態(tài)。
4.負(fù)載均衡策略
在nginx中支持的負(fù)載均衡策略如下:
輪詢加權(quán)策略(Round-Robin):在輪詢模策略中,,要求應(yīng)用服務(wù)器是分布式的
最少連接策略(Least-Connected):下一個(gè)請(qǐng)求是分配給最少的活動(dòng)連接數(shù)服務(wù)器,。
IP哈希策略(IP-Hash):一個(gè)哈希函數(shù)用來(lái)決定那個(gè)服務(wù)器被選擇作為下一個(gè)請(qǐng)求處理的服務(wù)器(基于客戶端的IP地址),。
4.1.輪詢策略
http {
upstream myapp1 { #服務(wù)器組,組名:myapp1
server srv1.example.com; #web應(yīng)用服務(wù)器1
server srv2.example.com; #web應(yīng)用服務(wù)器2
server srv3.example.com; #web應(yīng)用服務(wù)器3
}
server {
listen 80;
location / {
proxy_pass
http://myapp1; #客戶端訪問(wèn)的URL
}
}
}
以上是最簡(jiǎn)單的Nginx負(fù)載均衡配置,。在upstream myapp1中有3個(gè)應(yīng)用服務(wù)器實(shí)例,,當(dāng)負(fù)載均衡中沒(méi)有指定配置負(fù)載策略時(shí),默認(rèn)是使用輪詢權(quán)重策略,。所有請(qǐng)求都是代理給服務(wù)器組myapp1,,Nginx應(yīng)用http負(fù)載均衡到分布式請(qǐng)求中。
在Nginx反向代理負(fù)載均衡的擴(kuò)展包括:http,,https,,F(xiàn)astCGI,uwsgi,,SCGI和緩存,。
配置負(fù)載均衡
配置https負(fù)載均衡代替http,只使用“https”作為協(xié)議就可以了,。
當(dāng)設(shè)置負(fù)載均衡為FastCGI,,uwsgi,SCGI,,或緩存,,指令分別使用fastcgi_pass,uwsgi_pass,,scgi_pass,,和memcached_pass。
如果可以把加權(quán)輪詢算法分為先深搜索和先廣搜索,,那么nginx采用的是先深搜索算法,,即將首先將請(qǐng)求都分給高權(quán)重的機(jī)器,直到該機(jī)器的權(quán)值降到了比其他機(jī)器低,,才開(kāi)始將請(qǐng)求分給下一個(gè)高權(quán)重的機(jī)器,;第二,當(dāng)所有后端機(jī)器都down掉時(shí),,nginx會(huì)立即將所有機(jī)器的標(biāo)志位清成初始狀態(tài),,以避免造成所有的機(jī)器都處在timeout的狀態(tài),從而導(dǎo)致整個(gè)前端被夯住,。
4.2.最少連接策略
upstream myapp1 { #服務(wù)器組,,組名:myapp1
least_conn; #least_conn;最少連接策略
server srv1.example.com; #web應(yīng)用服務(wù)器1
server srv2.example.com; #web應(yīng)用服務(wù)器2
server srv3.example.com; #web應(yīng)用服務(wù)器3
}
最少連接允許控制加載應(yīng)用實(shí)例,更多適合在一些花費(fèi)比較長(zhǎng)時(shí)間去完成請(qǐng)求的一個(gè)場(chǎng)景中,。
用最少連接負(fù)載均衡,,Nginx會(huì)盡量不要求過(guò)載繁忙的應(yīng)用服務(wù)器去執(zhí)行請(qǐng)求,分配新的請(qǐng)求給一個(gè)不太忙碌的服務(wù)器代替執(zhí)行。
最少連接負(fù)載均衡在Nginx中被激活時(shí),,least_conn指令被用來(lái)作為服務(wù)器群組配置的一個(gè)部分。
4.3.IP哈希策略
配置IP哈希負(fù)載均衡,,只需要添加ip_hash指令指向服務(wù)器(uptream) 組配置:
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
每個(gè)客戶端請(qǐng)求都有可能發(fā)送到不同的服務(wù)器,,不能保證同一個(gè)客戶端總是指向同一個(gè)服務(wù)器。如果一個(gè)客戶端必須要跟服務(wù)器的會(huì)話關(guān)聯(lián)在一起的時(shí)候,,可以使用IP哈希負(fù)載均衡緩存策略,。
通過(guò)獲取客戶端額IP地址,經(jīng)過(guò)哈希函數(shù)的計(jì)算得到一個(gè)值,,利用該值對(duì)服務(wù)器的列表大小進(jìn)行取模運(yùn)算,,得到的值就是處理客戶端請(qǐng)求的服務(wù)器序號(hào)。采用IP哈希負(fù)載均衡策略,,的優(yōu)點(diǎn)是,,同一個(gè)客戶端的IP地址,每次發(fā)送的請(qǐng)求都是指向同一臺(tái)服務(wù)器進(jìn)行處理,。這種方式確保來(lái)自同一個(gè)客戶端請(qǐng)求總是指向同一個(gè)服務(wù)器除非這個(gè)服務(wù)是無(wú)效的,。
舉例子說(shuō)明:
例如一個(gè)系統(tǒng)的會(huì)話存儲(chǔ)用戶信息,每次將請(qǐng)求發(fā)送到服務(wù)器,,服務(wù)器都會(huì)從會(huì)話中獲取數(shù)據(jù),。但在負(fù)載均衡環(huán)境中,每次客戶端的每次請(qǐng)求都可能由不同的服務(wù)器處理,,所以可能出現(xiàn)無(wú)法獲取的到客戶端的會(huì)話數(shù)據(jù)(由于會(huì)話數(shù)據(jù)是保存在服務(wù)器的內(nèi)存中),。
4.4.權(quán)重策略
使用服務(wù)器權(quán)重策略,它也有可能影響到Nginx負(fù)載均衡算法,。
在上面的例子中,,服務(wù)器權(quán)重沒(méi)有配置,意味著所有指定的服務(wù)器都被視為同等資格的一個(gè)特定負(fù)載均衡策略,。尤其是輪詢策略,,它也意味著差不多平等地分配請(qǐng)求給服務(wù)器,并且快速平均地處理請(qǐng)求,。
當(dāng)權(quán)重參數(shù)被指定在一個(gè)服務(wù)器時(shí),,權(quán)重作為負(fù)載均衡決策的部分。
upstream myapp1 {
server srv1.example.com weight=3;
server srv2.example.com;
server srv3.example.com;
}
在這個(gè)配置中,,每5個(gè)請(qǐng)求都分配給應(yīng)用服務(wù)器實(shí)例如下:
3個(gè)請(qǐng)求將分配到serv1中,,1個(gè)請(qǐng)求分配給srv2中,而另外1個(gè)請(qǐng)求則分配個(gè)srv3中,。
在最近的Nginx版本中,,它同樣可以與最少連接和IP哈希策略一樣去使用權(quán)重策略。
4.5.總結(jié)
輪詢策略:
優(yōu)點(diǎn):如果希望每個(gè)服務(wù)器都能平均處理客戶端請(qǐng)求可使用輪詢策略。
缺點(diǎn):不支持會(huì)話管理,,另外,,假設(shè)有5個(gè)客戶端請(qǐng)求,有2臺(tái)服務(wù)器處理請(qǐng)求,,某一臺(tái)服務(wù)器處理請(qǐng)求時(shí)消耗資源比較大,,每次都接到消耗資源比較大的請(qǐng)求,那么該服務(wù)器處理能力就會(huì)下降,。
IP哈希策略:
缺點(diǎn):使用該策略,,服務(wù)器可能不會(huì)平均處理每個(gè)請(qǐng)求。假設(shè)有5個(gè)客戶端請(qǐng)求,,那么通過(guò)計(jì)算出哈希值后,,可能都是由一臺(tái)服務(wù)器處理。其它的服務(wù)器可能沒(méi)有請(qǐng)求需要處理,。
優(yōu)點(diǎn):支持會(huì)話管理,,如果系統(tǒng)中使用會(huì)話處理數(shù)據(jù),該策略比較適合,。
最少連接策略:
優(yōu)點(diǎn):系統(tǒng)把新連接分配給當(dāng)前連接數(shù)目最少的服務(wù)器,。該算法在各個(gè)服務(wù)器運(yùn)算能力基本相似的環(huán)境中非常有效。此負(fù)載均衡策略適合請(qǐng)求處理時(shí)間長(zhǎng)短不一造成服務(wù)器過(guò)載的情況,。
缺點(diǎn):雖然某個(gè)服務(wù)器的連接數(shù)較少,,但處理請(qǐng)求時(shí)間較長(zhǎng),這時(shí)候再接受請(qǐng)求處理,,可能影響到時(shí)間效率的問(wèn)題,。
權(quán)重策略:
優(yōu)點(diǎn):如果服務(wù)器的硬件等級(jí)差別比較大,那么配置高的服務(wù)器可分配較高權(quán)重,,以便處理更多的請(qǐng)求,。而配置低的服務(wù)器可接受少量請(qǐng)求。
缺點(diǎn):如果服務(wù)器的硬件等級(jí)一樣不太適合使用該策略,。
5.健康檢查
在Nginx反向代理中實(shí)現(xiàn)主動(dòng)或被動(dòng)健康檢查,,如果指定的響應(yīng)服務(wù)器出現(xiàn)錯(cuò)誤,Nginx將標(biāo)記該服務(wù)器為失敗,,將盡量去避免為后續(xù)的請(qǐng)求選擇該服務(wù)器,。
設(shè)置發(fā)生在超時(shí)失敗期間連續(xù)不成功的服務(wù)器通信的max_fails指令。默認(rèn)max_fails設(shè)置是1,,當(dāng)設(shè)置為0次時(shí),,這臺(tái)服務(wù)器的檢查檢查不啟用。Fail_timeout參數(shù)定義服務(wù)器多長(zhǎng)時(shí)間將被標(biāo)記為失敗,。在服務(wù)器fail_timeout期間,,Nginx不會(huì)馬上將該服務(wù)器標(biāo)記為失敗的服務(wù)器,而是模擬想客戶端請(qǐng)求去偵查服務(wù)器,如果偵查成功,,該服務(wù)器標(biāo)記為在線服務(wù)器,。
關(guān)于健康檢查的的插件需要花錢購(gòu)買,更多的信息請(qǐng)參考:
https://www./products/application-health-checks/
https://www./resources/admin-guide/installing-nginx-plus/
6.附錄
6.1.systemctl命令指南
Systemctl是一個(gè)systemd工具,,主要負(fù)責(zé)控制systemd系統(tǒng)和服務(wù)管理器,。
Systemd是一個(gè)系統(tǒng)管理守護(hù)進(jìn)程、工具和庫(kù)的集合,,用于取代System V初始進(jìn)程。Systemd的功能是用于集中管理和配置類UNIX系統(tǒng),。
在Linux生態(tài)系統(tǒng)中,,Systemd被部署到了大多數(shù)的標(biāo)準(zhǔn)Linux發(fā)行版中,只有為數(shù)不多的幾個(gè)發(fā)行版尚未部署,。Systemd通常是所有其它守護(hù)進(jìn)程的父進(jìn)程,,
但并非總是如此。使用Systemctl管理Linux服務(wù)
6.1.1.Systemd初體驗(yàn)和Systemctl基礎(chǔ)
6.1.1.1.1.檢查systemd安裝版本
1. 首先檢查你的系統(tǒng)中是否安裝有systemd并確定當(dāng)前安裝的版本
# systemd –version
6.1.1.1.2.檢查systemd和systemctl的二進(jìn)制文件和庫(kù)文件的安裝位置
# whereis system
# whereis systemctl
6.1.1.1.3檢查systemd是否運(yùn)行
# ps -eaf | grep system
6.1.1.4.分析systemd啟動(dòng)進(jìn)程
# systemd-analyze
6.1.1.5.分析啟動(dòng)時(shí)各個(gè)進(jìn)程花費(fèi)的時(shí)間
#systemd-analyze blame
6.1.1.6.分析啟動(dòng)時(shí)的關(guān)鍵鏈
# systemd-analyze critical-chain
重要:Systemctl接受服務(wù)(.service),,掛載點(diǎn)(.mount),,套接口(.socket)和設(shè)備(.device)作為單元。
Systemctl是一個(gè)systemd工具,,主要負(fù)責(zé)控制systemd系統(tǒng)和服務(wù)管理器,。
Systemd是一個(gè)系統(tǒng)管理守護(hù)進(jìn)程、工具和庫(kù)的集合,,用于取代System V初始進(jìn)程,。Systemd的功能是用于集中管理和配置類UNIX系統(tǒng)。
在Linux生態(tài)系統(tǒng)中,,Systemd被部署到了大多數(shù)的標(biāo)準(zhǔn)Linux發(fā)行版中,,只有為數(shù)不多的幾個(gè)發(fā)行版尚未部署。Systemd通常是所有其它守護(hù)進(jìn)程的父進(jìn)程,,
但并非總是如此,。
使用Systemctl管理Linux服務(wù)
本文旨在闡明在運(yùn)行systemd的系統(tǒng)上“如何控制系統(tǒng)和服務(wù)”。
Systemd初體驗(yàn)和Systemctl基礎(chǔ)
1. 首先檢查你的系統(tǒng)中是否安裝有systemd并確定當(dāng)前安裝的版本
# systemd--version
systemd 215
+PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP-APPARMOR
上例中很清楚地表明,,我們安裝了215版本的systemd,。
2. 檢查systemd和systemctl的二進(jìn)制文件和庫(kù)文件的安裝位置
# whereissystemd
systemd:/usr/lib/systemd /etc/systemd /usr/share/systemd/usr/share/man/man1/systemd.1.gz
# whereis systemctl
systemctl:/usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz
3. 檢查systemd是否運(yùn)行
# ps -eaf | grep[s]ystemd
root 10016:27?00:00:00/usr/lib/systemd/systemd --switched-root --system--deserialize 23
root 4441016:27?00:00:00/usr/lib/systemd/systemd-journald
root 4691016:27?00:00:00/usr/lib/systemd/systemd-udevd
root 5551016:27?00:00:00/usr/lib/systemd/systemd-logind
dbus 5561016:27?00:00:00/bin/dbus-daemon --system --address=systemd:--nofork--nopidfile --systemd-activation
注意:systemd是作為父進(jìn)程(PID=1)運(yùn)行的。在上面帶(-e)參數(shù)的ps命令輸出中,,選擇所有進(jìn)程,,(-a)選擇除會(huì)話前導(dǎo)外的所有進(jìn)程,并使用(-f)參數(shù)輸出完整格式列表(即
-eaf),。
也請(qǐng)注意上例中后隨的方括號(hào)和例子中剩余部分,。方括號(hào)表達(dá)式是grep的字符類表達(dá)式的一部分。
4. 分析systemd啟動(dòng)進(jìn)程
#systemd-analyze
Startup finished in487ms(kernel)+2.776s(initrd)+20.229s(userspace)=23.493s
5. 分析啟動(dòng)時(shí)各個(gè)進(jìn)程花費(fèi)的時(shí)間
#systemd-analyze blame
8.565s mariadb.service
7.991s webmin.service
6.095s postfix.service
4.311s httpd.service
3.926s firewalld.service
3.780s kdump.service
3.238s tuned.service
1.712s network.service
1.394s lvm2-monitor.service
1.126s systemd-logind.service
....
6. 分析啟動(dòng)時(shí)的關(guān)鍵鏈
#systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@"character.
The time the unit takes to start is printed after the "+" character.
multi-user.target @20.222s
└─mariadb.service @11.657s+8.565s
└─network.target @11.168s
└─network.service @9.456s+1.712s
└─NetworkManager.service @8.858s+596ms
└─firewalld.service @4.931s+3.926s
└─basic.target @4.916s
└─sockets.target @4.916s
└─dbus.socket @4.916s
└─sysinit.target @4.905s
└─systemd-update-utmp.service @4.864s+39ms
└─auditd.service @4.563s+301ms
└─systemd-tmpfiles-setup.service @4.485s+69ms
└─rhel-import-state.service @4.342s+142ms
└─local-fs.target @4.324s
└─boot.mount @4.286s+31ms
└─systemd-fsck@dev-disk-by\x2duuid-79f594ad\x2da332\x2d4730\x2dbb5f\x2d85d19608096
└─dev-disk-by\x2duuid-79f594ad\x2da332\x2d4730\x2dbb5f\x2d85d196080964.device@4
重要:Systemctl接受服務(wù)(.service),掛載點(diǎn)(.mount),,套接口(.socket)和設(shè)備(.device)作為單元,。
6.1.1.7.列出所有可用單元
# systemctl list-unit-files
6.1.1.8.列出所有運(yùn)行中單元
# systemctl list-units
6.1.1.9.列出所有失敗單元
# systemctl –failed
6.1.1.10.檢查某個(gè)單元是否啟用
# systemctl is-enabled nginx.service
6.1.1.11.檢查某個(gè)單元或服務(wù)是否運(yùn)行
# systemctl status nginx.service
|