1. 程式人生 > >Linux系統運維常見面試簡答題系列(二)(14題)

Linux系統運維常見面試簡答題系列(二)(14題)

local 企業 nginx服務 簡答題 ip協議 php out gin 報錯

1. /var/log/messages日誌出現kernel:nf_conntrack:tablefull,dropping packet,請問是什麽原因導致的,如何解決?

此報錯為iptables報錯信息,連接跟蹤表已滿,開始丟包,可能的原因是由於頻繁的連接、關閉,或者網絡的一些TCP的連接導致的
解決方法:
1)加大跟蹤表的大小
2)禁用一些不必跟蹤的連接狀態
3)禁用模塊 ip_vs nf_conntect

2. linux系統nginx與Php環境,發現PHP-FPM進程高,請說出可能的原因以及如何解決?

1)php的插件程序與現有的PHP版本存在不兼容情況,解決方法從php.ini中禁止相關插件
2)軟件本身存在問題,需要開發協同運維一同處理,查找原因
3)php程序存在死循環現象,使用服務器負載過高,解決方法使用top命令查看

3. 磁盤報錯:nospace left on device,但是df-h查看空間沒有滿,為什麽?

原因:系統inode滿了,因為所有的文件的文件名信息都是存放在inode裏面的,文件內容是存放在block裏面
可以使用df -i 來查看inode的使用情況
[[email protected] download]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 1234576 138303 1096273 12% /
tmpfs 60785 1 60784 1% /dev/shm
/dev/sda1 51200 38 51162 1% /boot

4. 磁盤空間滿了,刪除一部分nginx日誌後,但是磁盤空間還是滿的,為什麽?

刪除的日誌信息,一部分可能還是被進程調用,因此,需要重啟nginx服務來釋放進程;或者實際生產環境中使用>/log/access.log清空文件

5. 如何查看apache進程數

perfork模式:
ps -ef|grep http|grep -v grep|wc -l

worker模式:
pstree -a|grep httpd|wc -l

6. 提取文件test.log中FAILD與SUCCESSFUL的字符但不包括DONE的行,然後以:為隔符,提取第三列
[[email protected]]# cat test.log
FAILD:SUCCESSFUL:DONE:CRITICAL
FAILD:SUCCESSFUL:NO:GOOD
FAILD:NO:DO:QINGYUN
SUCCESSFUL:DONE:CRITICAL::CRITICAL

方法一:
[[email protected]]# egrep “FAILD|SUCCESSFUL”test.log |grep -v DONE|awk -F ‘:’ ‘{print $3}’
NO
DO

方法二:
[[email protected]]# egrep “FAILD|SUCCESSFUL”test.log |grep -v DONE|cut -d: -f3
NO
DO

7. 公司機房的服務器接近254臺了,請你設計一個解決方案,如何劃分網段,並實現業務平滑遷移。

第一種方案:變長子網掩碼的方法,加大IP地址的可使用範圍,全網分發/etc/hosts文件
第二種方案:增加核心交換機,在核心交換機劃分VLAN,將新增的服務器加入新的VLAN中,全網分發/etc/hosts文件

8. Nginx反向代理如何實現代理RS節點上的不同虛擬主機,請說出原理和配置方法或思路。

客戶端向反向代理發送請求,反向代理按一定的規則轉發至目標服務器,並將返回的內容返回給客戶端,可分為以下兩種:

配置內部不同服務器轉發:
upstream app1 {
server 192.168.1.10:80 weight=5;
server 192.168.1.11:80 weight=5;
}
upstream app2 {
server 192.168.1.20:80 weight=5;
server 192.168.1.21:80 weight=5;
}
配置server
server{
listern 80;
server_name app.abc.com
}

配置匹配轉發規則:
location /app1/ {
proxy_pass http://example.com/app1;
proxy_set_header Host $host;
}
location/app2/ {
proxy_passhttp://example.com/app2;
proxy_set_header Host $host;
}
做為負載均衡
配置負載均衡服務器池,也就是調度規則
upstream test_servers {
server 192.168.1.2:80 weight=5;
server 192.168.1.4:80 weight=5;
server 192.168.1.6:82 weight=15;
}
然後配置server標簽,
server {
listen 80;
server_name www.abc.com;
proxy_pass http://test_servers;
proxy_set_header Host $host
}
配置完成後,重新加載nginx服務

9. 說出netstat -an命令結果中最後一列status對應的不同網絡連接狀態含義
[[email protected] ~]# netstat -an
Active Internet connections (servers andestablished)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 139.24.65.45:54296 10.11.68.13:80 ESTABLISHED
tcp 0 52 39.24.65.145:22 36.32.8.85:546 ESTABLISHED
tcp 0 0 139.24.165.45:586 10.11.8.13:80 CLOSE_WAIT

listen 服務啟動後首先處於的狀態(監聽狀態)
established 建立連接,表示建立連接的兩端可以正常通信了
close_wait 對方主動關閉連接或網絡異常而中斷,因此狀態會變成
time_wait 主動斷開連接,收到對方確認後的狀態,相當於釋放資源,可以設置些種狀態的參數,也就是主動斷開後,下一次再連接的時間間隔
syn_sent 請求連接的狀態,需要訪問其它機器時首先發出的同步信號

10. binlog是什麽?binlog記錄的是什麽?有幾種模式及優缺點,企業中選擇哪種模式做同步?

binlog:是用於記錄所有更新了數據的操作語句,語句以事件的形式保存,它描述數據的更改過程
作用:用於實時備份數據,數據庫的主從復制
log_bin 打開記錄binlog功能

binlog的查看
mysqlbinlog /home/mysql/binlog/binlog.000003

binlog的刪除:可分為自動與手動刪除
自動刪除
能過binlog參數expire_logs_days來實現
show binary logs;
show variables like “expire_logs_days;”
set gloable expire_logs_days=3;
手工刪除
reset master 刪除主的binlog
reset slave 刪除從的中繼日誌

三種模式:
Row level模式 :日誌會記錄每一行數據被修改的形式,然後在從端對相同的數據進行修改
優點:可以不記錄執行SQL語句上下文相關的信息,只記錄哪一條數據被修改,修改成什麽樣了
缺點:所有執行的語句都當記錄到日誌文件中,而且都會以每行記錄的修改來記錄,會產生大量的日誌內容

statement模式:每一條修改數據的SQL都會記錄master的bin-log中,slave在復制的時候SQL進程會解析成和原來master端執行過的相同的SQL來執行
優點:解決了上row level模式的缺點,不需要記錄每一行數據的變化,減少日誌量,可以得高性能
缺點:由於記錄的是執行語句,在此模式下會有主從無法復制的問題出現

mixed自動模式:MYSQL會根據執行的每一條具體SQL語句來區分對待記錄的日誌格式,
企業使用場景:
1)如果不會用到mysql特殊的功能,基本都是默認的模式statement模式
2)如果會到mysql的一些特殊功能,基本都是會使用row level模式

11. 請詳細描述http協議原理

http協議:是客戶端與服務端之間通信傳輸數據的基礎,HTTP協議是基於TCP/IP協議之上的協議
原理包括四個過程:
連接:瀏覽器與服務器建立連接,打開一個socket的虛擬文件,表明連接建立成功
請求:瀏覽器通過socket向服務器提交請求(一般是GET或POST請示命令)
應答:瀏覽器請求提交後,通過HTTP協議傳送給服務器,服務器收到後進行處理將結果又通過HTTP回傳給客戶端,從而在客戶端顯示出所請求的頁面
關閉連接:當應答結束後,瀏覽器與服務器之間就斷開連接

12. 請詳細描述MySQL主從復制原理

原理:主庫開啟binlog功能並授權從庫連接主庫同步的用戶權限 ,將數據庫的修改或變化生成bin-log日誌,從庫通過change mster的語句得到主庫的相關信息,從庫開啟slave並連接主加進行相關驗證,驗證通過後,主庫的IO線程根據從庫的請求將相關位置點信息,與最新的blnlog信息發送給從庫的IO線程,從庫的IO線程將SQL語句的信息放在relay-log中,最後從庫的SQL線程將relay-log中的SQL語句應用到從庫中,實現主庫與從庫之間的數據同步,然後不斷重新上述動作

13. 用一條命令將除了sshd、crond、network、rsyslog幾個服務之外的服務全部關閉(無需開機自動)

方法一:
[[email protected]~]# for name in `chkconfig –list|grep 3:on|awk ‘{print $1}’|grep -Ev “sshd|crond|rsyslog|network”`;dochkconfig $name off;done
[[email protected]~]# chkconfig –list|grep 3:on
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

方法二:
[[email protected] ~]# chkconfig–list|grep 3:on|awk ‘{print $1}’|grep -Ev”sshd|crond|rsyslog|network”|sed -r “s#(.*)#chkconfig \1off#g”|bash
[[email protected]~]# chkconfig –list|grep 3:on
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

14. 說明系統/etc/inittab中各個啟動級別的含意

[[email protected]~]# tail /etc/inittab
#Default runlevel. The runlevels used are:
# 0 – halt (Do NOT set initdefault to this) 關機
# 1 – Single user mode 單用戶模式
# 2 – Multiuser, without NFS (The same as 3,if you do not have networking) 多用戶,沒有NFS
# 3 – Full multiuser mode 完整多用戶模式
# 4 – unused
# 5 – X11 桌面模式
# 6 – reboot (Do NOT set initdefault to this) 重啟
#
id:3:initdefault: 默認

Linux系統運維常見面試簡答題系列(二)(14題)