Linux運維工程師面試題整理

1. Nginx 反向代理,負載均衡,動靜分離,工做原理及優化

nginx配置反向代理。 php

vim Nginx.confcss

Server模塊中配置html

Listen  80前端

Server_name ip;node

server段裏面的location加上proxy_pass  http://ip:端口;mysql

Nginx配置完成後重啓一下nginx。linux

配置代理多個網站及服務ios

配置多個反向代理實現方式,是經過不一樣的端口代理訪問。這裏複製一個server段,將兩個server段nginx的端口更改,使用nginx的不一樣端口訪問。nginx

Server1配置:web

listen *:端口;>>>>多個反向代理使用不一樣端口

Server_name ip;>>>>註釋掉,使用端口訪問

location 裏面的proxy_pass 配置Tomcat1ip 加Tomcat端口

Server2配置:

listen *:端口;>>>>多個反向代理使用不一樣端口

Server_name ip;>>>>註釋掉,使用端口訪問

location 裏面的proxy_pass 配置Tomcat2ip 加Tomcat端口

 

 

負載均衡:

使用兩臺服務器,分別安裝nginx 和通Tomcat,端口號分別爲8080 8081

經過nginxupstream參數中添加應用服務器IP後添加指定參數,在location塊中配置動態組名稱,在訪問網頁的時候就會經過upstream中的配置項將指令分發給服務器。

 

動靜分離:

將靜態資源部署在Nginx上,當一個請求來的時候,若是是靜態資源的請求,就直接到nginx配置的靜態資源目錄下面獲取資源,若是是動態資源的請求,nginx利用反向代理的原理,把請求轉發給後臺應用去處理,從而實現動靜分離。

 

 

工做原理:Nginx由內核和模塊組成,其中,內核的設計很是微小和簡潔,完成的工做也很是簡單,僅僅經過查找配置文件將客戶端請求映射到一個location block(location是Nginx配置中的一個指令,用於URL匹配),而在這個location中所配置的每一個指令將會啓動不一樣的模塊去完成相·應的工做。

優化:3.網絡IO事件模型優化4.隱藏軟件名稱和版本號5.防盜鏈優化6.禁止惡意域名解析7.禁止經過IP地址訪問網站10.嚴格設置web站點目錄的權限 11.HTTP請求方法優化

2. Mysql 主從複製,主從複製的原理,讀寫分離,讀寫分離的原理,mysql優化

主從複製:

主服務器:

  1. 修改mysql配置,(#開啓二進制日誌,server-id)
  2. 重啓mysql,建立用於同步的用戶帳號
  3. 查看master狀態,記錄二進制文件名(mysql-bin.000003)和位置(73)

 

從服務器:

1.修改mysql配置

一樣找到my.cnf配置文件,添加server-id

2.重啓mysql,打開mysql會話,執行同步SQL語句

3.啓動slave同步進程:

 

讀寫分離:

首先在主mysql上面建一個受權用戶稍後給amoeba使用,1.經過安裝amoeba,修改dbserver.xml配置文件,修改26行左右,指定mysql帳戶名稱和密碼,指定mysql主從的IP2.修改amoeba.xml配置文件,修改amoeba代理的帳號和密碼,修改120左右的調用配置,而後實現讀寫分離。

mysql的讀寫分離的基本原理是:讓master(主數據庫)來響應事務性操做,讓slave(從數據庫)來響應select非事務性操做,而後再採用主從複製來把master上的事務性操做同步到slave數據庫中。

mysql優化:

1.選擇合適的存儲弓擎: InnoDB

2.保證從內存中讀取數據。將數據保存在內存中

3.按期優化重建數據庫

4.下降磁盤寫入操做

5.提升磁盤讀寫速度

6.充分使用索引

7.分析查詢日誌和慢查詢日誌

 

Mysqldump備份

mysqldump -h主機名 -P端口 -u用戶名 -p密碼 --database 數據庫名 > 文件名.sql

 

3. Tomcat 配置文件有哪些,優化

Tomcat目錄:conf bin logs webapps  work lib temp

配置文件通常都在conf文件夾裏,主要有server.xmlcontext.xmltomcat_user.xml,web.xml四個經常使用配置文件,server主要是服務器設置的,例如端口設置,路徑設置。context裏設置tomcat數據源,用來鏈接數據庫。tomcat_user主要是用戶名和密碼的設置。web是默認首頁等等之類的設置。

bin/catalina.bat/sh,配置內存

 

tomcat優化:

句柄鏈接數,最大併發數,線程數,請求超時時間,禁止tomcat manager管理入口

 關閉shutdown端口

 

4. Redis 做用,應用場景

做用:

主要用Redis實現緩存數據的存儲,能夠設置過時時間.對於一些高頻讀寫、臨時存儲的數據特別適合.    

應用場景:

緩存  分佈式會話 分佈式鎖  最新列表  消息系統

5. Zookeeper 配置文件叫什麼,做用是什麼

confzoo_sample.cfg修改成Zoo_cfg

做用:分佈式協調通知 增強集羣穩定性   增強集羣持續性  保證集羣有序性  保證集羣高效

註冊中心
服務提供方:針對所提供的服務到註冊中心發佈
服務消費方:到服務中心訂閱所需的服務。
對於任何一方,不論服務提供方或者服務消費方都有可能同時兼具兩種角色,即須要提供服務也須要消費服務。

6. Lvs 工做原理是什麼,有哪些工做模式

→1.LVS調度器收到目標地址爲VIP的請求包後,將MAC地址改爲RS(真正的服務器)的MAC地址。並經過交換機(鏈路層)發給RS。

2.RS的鏈路層收到請求包後,往上傳給IP層。IP層須要驗證請求的目標IP地址,因此RS須要配置一個VIP的 loopbak device(策略文件)。這樣RS的IP層收到報文後,會往上遞交給傳輸層,之因此配置成loopbak device,是由於loopbak device 對外不可見,不會跟LVS的VIP衝突。

3.RS處理完成後,將應答包直接返回給客戶端。

工做模式:

LVS-DRLVS-NATLVS-FULLNATLVS-TUN

7. Keepalived 做用,怎麼實現負載均衡

檢查web服務器的狀態,若是有一臺web服務器/mysql服務器宕機或故障,keepalived將故障節點從系統中剔除,當故障恢復的時候自動加入服務器集羣中,很是智能化,只須要手動修復壞的節點便可。

負載均衡步驟

1、安裝master組件和依賴包keepalive+lvs

2、備份keepalived配置文件

3、編輯keepalived配置文件

4、開啓路由轉發

5、重啓keepalived服務並設置開機自啓

主從一樣步驟,修改keepalived.confstate主從分別修改成masterbackup

web1web2服務器上安裝nginx,並修改內核參數,而後添加虛擬主機IP

 

8. Rabbitmq 做用,爲何使用(應用場景)

消息隊列,用在分佈式系統存儲轉發消息

應用場景:異步處理,應用解耦,流量削峯

9. Haproxy 參數優化 做用

長鏈接超時時間

客戶端超時時間

守護進程模式

最大鏈接數

 

/etc/haproxy/haproxy.cfg

做用:高可用,負載均衡和用於TCP和基於http的應用程序代理

優勢:

HAProxy支持數以萬計的 併發鏈接。

同時能夠保護你的web服務器不被暴露到網絡上。

 

10. MongoDB 是什麼數據庫,優化參數有哪些

MongoDB是一個基於分佈式文件存儲的數據庫。由C++語言編寫

MongoDB優化:

1.cachesizeGB(緩存大小)  按配額的60%左右配置便可

2.oplogsizeMB (固定集合) 設置爲可用disk空間的5%

3.啓用Log Rotation日誌切換  防止MongoDBlog文件無限增大,佔用太多磁盤空間,使用Log Rotation並及時清理歷史日誌文件

4.stack size (鏈接內存優化) Stack設置小一點,好比說1024

5.MongoDB打開文件數優化   設置文件打開描述數量

11. Zabbix 做用是什麼 能夠監控什麼,優化有什麼,工做原理

Zabbix做用:監控網路主機

監控:CPU負荷 內存使用,磁盤使用,日誌監視,端口監視,網絡狀態,

zabbix優化:

1.輪詢器實例數量  2.不可達主機  3.HTTP 輪詢器子進程實例個數 4.緩存大小5.歷史緩存數據大小 5.trappers進程實例數量

工做原理:

Agent安裝在被監控的主機上,Agent負責按期收集客戶端本地各項數據,併發送至Zabbix Server端,Zabbix Server收到數據,將數據存儲到數據庫中,用戶基於Zabbix WEB能夠看到數據在前端展示圖像。Zabbix監控某個具體的項目,項目會設置一個觸發器閾值,當被監控的指標超過該觸發器設定的閾值,會進行一些必要的動做,動做包括:發送信息(郵件、微信、短信)、發送命令(SHELL 命令、RebootRestartInstall等)。

 

12. VMware

13. Apache 配置文件叫什麼,優化有哪些

配置文件:/etc/httpd/conf/httpd.conf

1. 移除不用的模塊。2將緩存放在獨立的磁盤3.使用持久鏈接4.不要設置KeepAliveTimeout過高 5.提升寫入緩衝器( Write Buffer)大小6.提升最大打開文件7.頻繁訪問的數據設置緩存。

14. NFS 做用

網絡文件系統是應用層的一種應用服務,它主要應用於LinuxLinux系統、LinuxUnix系統之間的文件或目錄的共享。對於用戶而言能夠經過 NFS方便的訪問遠地的文件系統,使之成爲本地文件系統的一部分。採用NFS以後省去了登陸的過程,方便了用戶訪問系統資源。

mount -t nfs -o ro ip:/共享目錄  /本地目錄

掛載失敗:

1.防火牆受阻 2.nfs配置有問題3.客戶端和服務端是不是同一個網段

15. Ansible 配置,優化有什麼,怎麼實現的自動化

配置:

/etc/hosts文件中添加被管理服務器ip

 

Ansible性能調優

1 Ansible SSH 關閉祕鑰檢測

2 OpenSSH鏈接優化

3SSH pipelining(管道輸送)加速Ansible (默認關閉)

4 Ansible Facts緩存優化

 

自動化:在管理服務器上建立文件,經過命令行將指令傳輸到各個被管理服務器上

16.rsync的做用及優勢?

Rsync能夠再不一樣的主機 之間鏡像同步整個目錄樹,支持增量備份,保持連接屬性和權限,採用優化的同步算法,傳輸前執行壓縮,適合異地備份,鏡像服務等應用,是一種經常使用的文件備份工具及數據同步工具。

17.Linux系統優化有什麼

⑴登陸系統:不使用root登陸,經過sudo受權管理,使用普通用戶登陸。

⑶時間同步:定時自動更新服務器時間。
⑷配置yum更新源,從國內更新下載安裝rpm包。
⑸關閉selinux及iptablesiptables工做場景若有wan ip,通常要打開,高併發除外)

⑻精簡開機啓動服務(crond、sshd、network、rsyslog)
⑼Linux內核參數優化/etc/sysctl.conf,執行sysct -p生效。

⑾鎖定關鍵系統文件chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow  /etc/inittab 處理以上內容後,把chatter更名,就更安全了。)

18.常見的centosredhat故障怎麼處理?

1.忘記linux root密碼
這個問題出現的概率是很高的,不過,在linux下解決這個問題也很簡單,只需重啓linux系統,而後引導進入linux的單用戶模式(init 1),因爲單用戶模式是不須要輸入登陸密碼的,所以,能夠直接登陸系統,修改root密碼便可解決問題。

2.grub.conf丟失和解決辦法

//刪除/bootr/grub/gub.conf文件

//刪除後從新啓動查看出現的問題

能夠看出系統是沒法從硬盤啓動了

2)解決辦法

一種是在無Live-CD光盤時解決,具體操做以下:

系統重啓後,進入grub模式

首先查看/boot分區所在的位置,系統內核,第三行是臨時系統鏡像文件所在的位置,而後boot重啓。

啓動起來後進入/boot/grub目錄下編輯grub.conf文件:

編輯grub.conf的內容以下:

配置啓動菜單項,等待時間,菜單名稱,root啓動文件的位置啓動時的系統內核位置及名稱,內核鏡像的位置及名稱

編輯完後這錯誤也就完全的解決了。

 

19.redis主從複製模式下,主掛了怎麼辦?redis提供了哨兵模式(高可用)

何謂哨兵模式?就是經過哨兵節點進行自主監控主從節點以及其餘哨兵節點,發現主節點故障時自主進行故障轉移。

20.使用redis有哪些好處

1.速度快 2.支持豐富數據類型 (list set hash string3.支持事務(原子性) 4.豐富的特性

21.MySQL裏有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據(redis有哪些數據淘汰策略???)

redis 內存數據集大小上升到必定大小的時候,就會施行數據淘汰策略(回收策略)。淘汰策略:

最近最少使用的數據淘汰   將要過時的數據淘汰     已過時的數據中任意選擇數據淘汰  任意選擇數據淘汰  禁止驅逐數據

 

22.看你簡歷上寫了你項目裏面用到了Redis,大家爲啥用Redis

 

由於傳統的關係型數據庫如Mysql已經不能適用全部的場景了,好比秒殺的庫存扣減,APP首頁的訪問流量高峯等等,都很容易把數據庫打崩,因此引入了緩存中間件,目前市面上比較經常使用的緩存中間件有Redis Memcached 不過綜合考慮了他們的優缺點,最後選擇了Redis

應用場景不同:Redis出來做爲NoSQL數據庫使用外,還能用作消息隊列、數據堆棧和數據緩存等;Memcached適合於緩存SQL語句、數據集、用戶臨時性數據、延遲查詢數據和session等。

災難恢復–memcache掛掉後,數據不可恢復; redis數據丟失後能夠經過aof恢復

存儲數據安全–memcache掛掉後,數據沒了;redis能夠按期保存到磁盤(持久化)

 

23.Redis有哪些數據結構呀?

 

字符串String、字典Hash、列表List、集合Set、有序集合SortedSet

24.那你使用過Redis分佈式鎖麼,它是什麼回事?

先拿setnx來爭搶鎖,搶到以後,再用expire(一顆四百額)給鎖加一個過時時間防止鎖忘記了釋放。

25. 這時候對方會告訴你說你回答得不錯,而後接着問若是在setnx以後執行expire以前進程意外crash或者要重啓維護了,那會怎麼樣?

唉,是喔,這個鎖就永遠得不到釋放了,我記得set指令有很是複雜的參數,這個應該是能夠同時把setnxexpire合成一條指令來用的!

26.RDB的原理是什麼?

你給出兩個詞彙就能夠了,forkcowfork是指redis經過建立子進程來進行RDB操做,cow指的是copy on write,子進程建立後,父子進程共享數據段,父進程繼續提供讀寫服務,寫的頁面數據會逐漸和子進程分離開來。

27.mysql原理

關係型數據庫使數據庫的數據之間存在關聯關係能夠經過一條數據關聯出一些列數據,方便了數據的檢索和查詢,提升開發人員的查詢效率,可是會拖累數據庫,所以關係型數據庫不支持過高的併發

28.Redis主從怎麼配置?

1.編輯配置文件Redis.conf

redis默認只容許本機鏈接,因此須要找到「bind 127.0.0.1」並將這行註釋掉:

redis3.0版本之後增長了保護模式 ,如需保護,改爲yes

將默認的「daemonize no」改成yes,設置redis以守護線程方式啓動:

分別配置pidlogdb文件的保存地址

啓動redis

設置開機啓動

2.Redis主從配置

從節點配置

(1) 修改redis配置文件,添加一行配置「slaveof 192.168.0.101 6379」映射到主節點

(2) 重啓從節點的redis

 

3.查看並驗證主從配置

1)主節點與從節點均登陸redis並執行info命令查看主從配置結果

找到「# Replication」模塊,能夠看到主節點提示存在一個從節點,而且會列出從節點的相關信息,一樣,能夠在從節點看到本身的主節點是哪一個,列出主節點的相關信息

2)驗證主從

登陸主節點redisset age 24,到從節點直接get age,看到能夠get到咱們在主節點設置的值24,說明主從配置成功

 

29.mysql數據庫用的是主從讀寫分離,主庫寫,從庫讀,假如從庫沒法讀取了、或者從庫讀取特別慢,你會如何解決?

筆者回答:以解決問題爲前提條件,先添加從庫數量,臨時把問題給解決,而後抓取slow log ,分析sql語句,該優化就優化處理。慢要不就是硬件跟不上,須要升級;要不就是軟件須要調試優化,等問題解決在細化。

30.Mysql忘記密碼該如何操做呢?

一、修改my.ini配置文件,添加跳過密碼驗證代碼;

代碼:skip-grant-tables,使用爲跳過密碼驗證。代碼添加位置,建議放在[mysqld]以後;

二、進入命令行,使用mysql -u root登陸;

三、使用use mysql;選擇數據庫;

四、執行update代碼;

update mysql.user set authentication_string=password('root_password') where user='root';

5.執行完成後,再輸入如下代碼:

flush privileges;

刷新MySQL的系統權限相關表,不然會出現拒絕訪問等錯誤;

再記得刪除my.ini中配置的skip-grant-tables(跳過密碼驗證)代碼;

五、重啓服務後,再使用新密碼登陸便可;

31.Nginx宕機怎麼處理?

Nginx上傳大文件150M以上上傳不了。是由於帶寬的問題,由於你們都在上傳,小文件能夠傳是由於在優化的65秒能夠上傳內容這麼大。把上傳的優化斷開時間修改到1800秒。過了幾天服務器直接宕機了。後來發現後來服務器的進程滿級了。由於上傳的小的文件也是佔用1800秒。因此不少人上傳不了文件,由於進程都被佔用了。解決。。要進行邏輯業務分離,上傳的專門作上傳服務器,再也不走網站形式進行上傳。

32.出現keepalived腦裂,是什麼緣由?

多是端口受阻。網絡線路抖動,致使通電信號受阻。。致使健康信號包發送不了也接收不了。因此雙方都起了VIP,客戶訪問時出現兩個VIP,因此出現這個問題。

 

33.懷疑一塊網卡有問題的時候,如何檢測?

 將其安裝在一臺能正常上網的機器上,看其指示燈是否閃爍,正常接入狀態下指示燈應爲紅色或者綠色,而後用ping命令檢測是否能ping通網絡上的主機,若通則正常,若網卡驅動安裝無誤而ping命令不通,則能夠判定網卡壞掉。

 

34.遇到網絡或病毒攻擊,該怎麼辦,說說思路,而後是怎麼找到病毒源頭,怎麼清除病毒?這是公司常遇到的網絡問題

  1. 提早預防
    裝殺毒軟件,下升級補丁,修補漏洞,定時更新殺毒軟件,定時進行全盤掃描。
    2.臨陣磨槍0
    萬一中毒,第一件要乾的事就是下網,防止病毒繼續蔓延。而後當即重新啓動機器,再開機時狂按F8,選擇進入安全模式,進入後任何程序都不要打開,在任務管理器上把平時看不到的進程關閉,而後關閉任務管理器,打開殺毒軟件,進行全盤掃描。查出的病毒先用殺毒軟件刪,刪不了的話,用別的機器下一個unlocker(是個程序,需安裝,極小,才191Kb),記下病毒路徑,找到病毒文件,右鍵選擇unlocker,手動刪除!

35.數據庫滿了,怎麼縮容,騰出更多的磁盤空間,也是公司常遇到的問題;

30天之前的不多用到日誌進行按期的清除。

36.nginxApache的區別在哪兒?

Nginx是輕量級的web服務比Apache佔用更小的內存以及資源

Nginx併發量比Apache高三倍以上

可做爲負載均衡,反向代理器

37.LVS的工做原理是什麼?有哪些算法?

LVS羣集,也叫LVS虛擬服務器,針對Linux內核開發的一個負載均衡項目。LVS是基於IP地址和內容請求分發的高效負載均衡解決方案,如今屬於linux內核的一部分,默認編譯爲ip_vs模塊。

38.Linux系統用戶數

/etc/security/limits.conf

# 當前用戶最大登陸數

# max number of logins for this user

* soft maxlogins 100

* hard maxlogins 100

# 系統最大登陸用戶數

# max number of logins on the system

* soft maxsyslogins 100

* hard maxsyslogins 100

39.MySql將查詢結果插入到另一張表

Insert into 目標表 select * from 來源表 ;

40. Redis數據量很大,怎麼作

1、增長內存

  redis存儲於內存中,數據太多,佔用太多內存,那麼增長內存就是最直接的方法,可是這個方法通常不採用,由於內存滿了就加內存,滿了就加,那代價也太大,至關於用錢解決問題,不首先考慮,通常全部方面都作到最優化,才考慮此方法

 

2、搭建Redis集羣

 

 

 

 

(1)全部的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬.

(2)節點的fail(失敗)是經過集羣中超過半數的節點檢測失效時才生效.

(3)客戶端與redis節點直連,不須要中間proxy.客戶端不須要鏈接集羣全部節點,鏈接集羣中任何一個可用節點便可

(4)redis-cluster把全部的物理節點映射到[0-16383]slot,cluster 負責維護node<->slot<->value

Redis集羣中內置了 16384 個哈希槽,當須要在 Redis 集羣中放置一個 key-value 時,redis 先對key 使用 crc16 算法算出一個結果,而後把結果對 16384 求餘數,這樣每一個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大體均等的將哈希槽映射到不一樣的節點

 

41.磁盤RAID級別有幾種,分別是哪幾種?你瞭解或者使用過哪幾種,請寫出它們的大概描述和區別。

RAID級別有如下幾種:NRAID,JBOD,RAID0,RAID1,RAID0+1,RAID3,RAID5等。目前常用的是RAID0,RAID1,RAID3,RAID5和RAID(0+1)。它們的區別大體以下:

RAID 0 存取速度最快 但沒有容錯 2塊盤

RAID 1 徹底容錯但成本比較高,可用於數據備份,磁盤利用率爲50%  2塊盤

RAID 3 寫入性能最好 但沒有多任務功能  3塊盤n+1,1爲校驗盤

RAID 5 具有多任務及容錯功能,安全性高,隨機和連續讀寫性能低 3塊盤

RAID 0+1 讀寫速度快、徹底容錯但成本高,用的比較多 4塊盤 利用率50%

42.192.168.1.0/23包含多少IP

43.工做中遇到的故障點

44.mysql主從複製不一樣步的緣由及如何處理?

→兩種方法:

方法一:該方法適用於主從庫數據相差不大,或者要求數據能夠不徹底統一的狀況,數據要求不嚴格的狀況

首先進入master庫,查看進程是否sleep太多,還有狀態是否正常,而後在從slave上查看,IO線程和SQL線程是否正常。若是不正常,則中止slave,而後set globai sql_slave_skip_counter=1(跳過一個事物);再從新啓動slave,再用show slave status \G;查看,若是IO線程和SQL線程均爲yes,那麼主從同步狀態恢復正常。

 

方法二:該方法適用於主從庫數據相差較大,或者要求數據徹底統一的狀況

1.先進入主庫,進行鎖表,防止數據寫入 。使用命令: flush tables with read lock;

2..進行數據備份 。把數據備份到mysql.bak.sql文件 ,使用命令:mysqldump -uroot -p -hlocalhost > mysql.bak.sql

3.查看master 狀態 。使用命令:show master status;

4.把mysql備份文件傳到從庫機器,進行數據恢復 。使用命令:scp mysql.bak.sql root@192.168.128.101:/tmp/

5.中止從庫的狀態 。使用命令:stop slave;

6.而後到從庫執行mysql命令,導入數據備份。使用命令:source /tmp/mysql.bak.sql

7.設置從庫同步,注意該處的同步點,就是主庫show master status信息裏的| File| Position兩項

change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;

8.從新開啓從同步 。使用命令:start slave;

9.查看同步狀態 。使用命令:show slave status\G ;若是IO線程和SQL線程均爲yes時,則主從可同步。

45.當文件系統受到破壞時,如何檢查和修復系統? 
參考答案: 
成功修復文件系統的前提是要有兩個以上的主文件系統,並保證在修復以前首先卸載將被修復的文件系統。 
使用命令fsck對受到破壞的文件系統進行修復。fsck檢查文件系統分爲5步,每一步檢查系統不一樣部分的鏈接特性並對上一步進行驗證和修改。在執行 fsck命令時,檢查首先從超級塊開始,而後是分配的磁盤塊、路徑名、目錄的鏈接性、連接數目以及空閒塊鏈表、i-node。

46.訪問網頁時報錯都是什麼意思?

401:用戶驗證失敗。402:密碼認證失敗。403:訪問被拒絕。404:文件位置發生了轉變或刪除。500:用戶權限的問題致使。501: 不具備請求功能。502:錯誤網關。503:正在維護或者暫停。504:網關超時的現象 505:http的版本是不受支持。

47.簡述貴公司的PVUVIP,流量等資源大小?

日訪問量100萬,小時點擊量4-5萬,最高QPS 1000左右,UV量是20-30萬,IP量爲55萬

48.zabbix常見報錯問題處理

①報錯:
centos6.5裝上agent以後,卻發現啓動不了,日誌裏面報錯以下:
zabbix_agentd [20529]: cannot create Semaphore: [28] No space left on device(設備上沒有剩餘空間)
zabbix_agentd [20529]: unable to create mutex for log file
修改/etc/sysctl.conf
添加以下行:
kernel.sem (信號量)= 500(信號集容納最大量) 64000(全部信號量) 64(單個集) 256(信號集最大)
修改以後,執行sysctl -p使其生效。

從新啓動zabbix-agent便可

49.mysql查看版本號?Liunx ,Ubuntu查看版本號?

登陸時候能夠查看或者使用命令select version() ; cat /etc/redhat-release  cat /etc/issue

50.Linux中開放某個端口

開放某個端口

開放8080端口:firewall-cmd --zone(區)=public(公衆)--add-port=8080/tcp --permanent(永久)

重啓防火牆:firewall-cmd --reload

51.Linux操做系統啓動順序

開機自檢,加載BIOSGrub引導→加載內核Kernel→init系統初始化腳本(/etc/rc.d/rc.sysinit)→加載啓動的服務

52.Linux/var/log/下日誌詳解

系統日誌通常都存在/var/log
經常使用的系統日誌以下:
核心啓動日誌:/var/log/dmesg
系統報錯日誌:/var/log/messages(幾乎全部的開機系統發生的錯誤
郵件系統日誌:/var/log/maillog
FTP系統日誌:/var/log/xferlog

53.mysql中一些重要的參數

最大鏈接數響應的鏈接數索引緩衝區的大小等待行動的秒數表高速緩存的大小容許的同時客戶的數量爲全部線程打開表的數量服務器在關閉它以前在一個鏈接上等待行動的秒數

54.Linux怎麼批量殺死進程

ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9

說明:
grep firefox的輸出結果是,全部含有關鍵字「firefox」的進程。
grep -v grep是在列出的進程中去除含有關鍵字「grep」的進程。
cut -c 9-15是截取輸入行的第9個字符到第15個字符,而這正好是進程號PID
xargs kill -s 9中的xargs命令是用來把前面命令的輸出結果(PID)做爲「kill -s 9」命令的參數,並執行該命令。「kill -s 9」會強行殺掉指定進程。

 

55.查看殭屍進程:ps aux | grep Z

殺死殭屍進程:kill -9 7811 還會產生新的進程,用如下命令進行殺死進程

解決辦法:

ps -ef | grep defunct(查出再也不使用的進程,死的)

$3 是這些殭屍進程的父進程 PID ( PPID ),殺之!

ps -ef | grep defunct | awk '{print $3}' | xargs -i kill {}

 

56.vim中有那三種模式

命令,輸入,編輯模式

57.關係型數據庫和非關係性數據庫的區別?

數據存儲方式不一樣,擴展方式不一樣,對事物的支持不一樣

關係型數據庫最典型的數據結構是表,由二維表及其之間的聯繫所組成的一個數據組織

非關係型數據庫嚴格上不是一種數據庫,應該是一種數據結構化存儲方法的集合,能夠是文檔或者鍵值對等。

58.nginx裏面添加虛擬主機

添加一個server{},每一個server裏面的配置對應一個虛擬主機vhost

location下的fastsgi_pass 後面跟 虛擬主機ip+端口。

 

59.查看資源有哪些?

iostat監控系統設備的IO負載  top系統實時狀況  ifconfig查看網絡 uptime查看系統負載

free內存狀況

 

59.Linux系統用戶數

/etc/security/limits.conf

# 當前用戶最大登陸數

# max number of logins for this user

* soft maxlogins 100

* hard maxlogins 100

 

# 系統最大登陸用戶數

# max number of logins on the system

* soft maxsyslogins 100

* hard maxsyslogins 100

60.MySQL5.6mysql5.7的區別是什麼?

mysql5.75.6的新版本,新增了新的優化器,原生JSON支持,多源複製,還優化了總體的性能、GIS空間擴展、innodb.

61.jdk1.71.8的區別?

併發工具加強  Networking加強   Security 加強 

62.有沒有遇到過ddos 攻擊,攻擊的原理是什麼,當前最容易消耗的是什麼資源?

即分佈式拒絕服務攻擊,是指攻擊者經過網絡遠程控制大量殭屍主機向一個或多個目標發送大量攻擊請求,耗盡攻擊目標服務器的系統資源,致使其沒法響應正常的服務請求,利用的是TCP/IP三次握手 sync實現攻擊...   最容易消耗目標服務器的網絡帶寬

63.服務器怎麼作的安全加固?

1.禁用或刪除無用帳號2.檢查特殊帳號 3.限制用戶su 4.禁止root用戶直接登陸

5.關閉沒必要要的服務 6.記錄全部用戶的登陸和操做日誌 7.設置登陸超時 8.ssh服務安全

 

64.如今給你三百臺服務器,你怎麼對他們進行管理?
管理3百臺服務器的方式:
1)設定跳板機,使用統一帳號登陸,便於安全與登陸的考量。
2)使用salt、ansiable、puppet進行系統的統一調度與配置的統一管理。
3)創建簡單的服務器的系統、配置、應用的cmdb信息管理。便於查閱每臺服務器上的各類信息記錄。 

 

65.LVS、Nginx、HAproxy有什麼區別?工做中你怎麼選擇?
LVS: 是基於四層的轉發
HAproxy: 是基於四層和七層的轉發,是專業的代理服務器
Nginx: 是WEB服務器,緩存服務器,又是反向代理服務器,能夠作七層的轉發

區別: LVS因爲是基於四層的轉發因此只能作端口的轉發
而基於URL的、基於目錄的這種轉發LVS就作不了

工做選擇:

HAproxy和Nginx因爲能夠作七層的轉發,因此URL和目錄的轉發均可以作
在很大併發量的時候咱們就要選擇LVS,像中小型公司的話併發量沒那麼大
選擇HAproxy或者Nginx足已,因爲HAproxy由是專業的代理服務器
配置簡單,因此中小型企業推薦使用HAproxy

 

66.講一下Keepalived的工做原理?
在一個虛擬路由器中,只有做爲MASTER的VRRP路由器會一直髮送VRRP通告信息,
BACKUP不會搶佔MASTER,除非它的優先級更高。當MASTER不可用時(BACKUP收不到通告信息)
多臺BACKUP中優先級最高的這臺會被搶佔爲MASTER。這種搶佔是很是快速的(<1s),以保證服務的連續性
因爲安全性考慮,VRRP包使用了加密協議進行加密。BACKUP不會發送通告信息,只會接收通告信息

 


67.講述一下Tomcat800五、800九、8080三個端口的含義?
8005==》 關閉時使用
8009==》 爲AJP端口,即容器使用,如Apache能經過AJP協議訪問Tomcat的8009端口
8080==》 通常應用使用

68.什麼叫CDN?
- 即內容分發網絡
- 其目的是經過在現有的Internet中增長一層新的網絡架構,將網站的內容發佈到
最接近用戶的網絡邊緣,使用戶可就近取得所需的內容,提升用戶訪問網站的速度

69.什麼叫網站灰度發佈?
灰度發佈是指在黑與白之間,可以平滑過渡的一種發佈方式
AB test就是一種灰度發佈方式,讓一部用戶繼續用A,一部分用戶開始用B
若是用戶對B沒有什麼反對意見,那麼逐步擴大範圍,把全部用戶都遷移到B上面 來
灰度發佈能夠保證總體系統的穩定,在初始灰度的時候就能夠發現、調整問題,以保證其影響度

70.簡述DNS進行域名解析的過程?
用戶要訪問www.baidu.com,會先找本機的host文件,再找本地設置的DNS服務器,若是也沒有的話,就去網絡中找根服務器,根服務器反饋結果,說只能提供一級域名服務器.cn,就去找一級域名服務器,一級域名服務器說只能提供二級域名服務器.com.cn,就去找二級域名服務器,二級域服務器只能提供三級域名服務器.baidu.com.cn,就去找三級域名服務器,三級域名服務器正好有這個網站www.baidu.com,而後發給請求的服務器,保存一份以後,再發給客戶端

71.RabbitMQ是什麼東西?
RabbitMQ也就是消息隊列中間件,消息中間件是在消息的傳息過程當中保存消息的容器
消息中間件再將消息從它的源中到它的目標中標時充當中間人的做用
隊列的主要目的是提供路由並保證消息的傳遞;若是發送消息時接收者不可用
消息隊列不會保留消息,直到能夠成功地傳遞爲止,固然,消息隊列保存消息也是有期限地

 

72.簡述TCP三次握手的過程?

 

答案:

 

在TCP/IP協議中,TCP協議提供可靠的鏈接服務,採用三次握手創建一個鏈接。第一次握手:創建鏈接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認。第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態。第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。完成三次握手,客戶端與服務器開始傳送數據

 

 

 

簡版:首先A向B發SYN(同步請求),而後B回覆SYN+ACK(同步請求應答),最後A回覆ACK確認,這樣TCP的一次鏈接(三次握手)的過程就創建了

 

73.常見的Linux版本有哪些?你最擅長哪種?說明你擅長哪一塊?

 

答案:

 

常見的Linux發行版有,Debian, Gentoo, Ubuntu, RedHat, CentOS, Fedora,  Kali Linux, Suse等,最擅長CentOS,擅長部分命令使用,腳本編程,環境服務搭建與配置。

 

74.Linux的標準分區是什麼?(內存32G,硬盤1T)

 

答案:

 

/boot 分200M,/分50G,swap 分16G,其他分到 /data 下。

 

75. 忽然發現一臺Linux系統只讀,應該怎麼處理,請寫出詳細步驟。

 

答案:

 

文件系統只讀,多是誤操做,好比掛載的時候加了ro的掛載選項。也多是文件系統損壞,這時候可使用fsck -y 分區 來嘗試修復一下,但在修復以前最好是把重要數據作一個備份以防萬一。若是修復失敗,那說明是磁盤損壞,這就須要更換磁盤了。

 

76.請用iptables寫一條規則(同時容許443,80,1723,22,3306,11211,25,110,dns,ntp協議,並寫出默認容許或者拒絕端口的做用)

 

答案:

 

iptables -I INPUT -p tcp -m multiport --dport 443,80,1723,22,3306,11211,25,110,53,123 -j ACCEPT

 

iptables默認是容許全部端口開放的,若是想只放行指定某些端口,那就須要配置一下默認規則了。好比本例中,咱們寫完放行的端口規則後還須要寫一條默認拒絕的規則iptables -P INPUT DROP 這樣除了上面那規則中提到的端口能夠訪問外,其餘端口都是拒絕的。

 

77.網站HTTPS證書認證須要那幾個文件?分別是什麼?什麼做用?

 

答案:

 

HTTPS證書須要有兩個文件,一個是crt,一個是key。crt文件就是公鑰文件,用來加密的。而key文件是私鑰文件,是用來解密的。

 

78. 構建簡單網站架構模型

 

設備:13臺服務器,要求:有負載均衡和數據庫主從

 

答案:

 

架構:Keepavlied + lvs + nginx/php + NFS + mysql + redis

 

keepalived+lvs 使用2臺

 

Nginx+php-fpm使用5臺

 

NFS 使用1臺

 

Mysql雙主,並使用keepalived構建高可用 使用2臺

 

Redis 使用1臺,用來存session

 

備份機器使用1臺

 

監控機器使用1臺

 

79.Apache有幾種工做模式,分別介紹下其特色,並說明什麼狀況下采用不一樣的工做模式?

 

Web服務器Apache目前一共有三種穩定的MPM(Multi-Processing Module,多進程處理模塊)模式。它們分別是prefork,worker和event,它們同時也表明這Apache的演變和發展。

 

一、Prefork MPM

 

Prefork MPM實現了一個非線程的、預派生的web服務器。

 

二、Worker MPM

 

和prefork模式相比,worker使用了多進程和多線程的混合模式,worker模式也一樣會先預派生一些子進程,而後每一個子進程建立一些線程,同時包括一個監聽線程,每一個請求過來會被分配到一個線程來服務。

 

三、Event MPM

 

這是Apache最新的工做模式,它和worker模式很像,不一樣的是在於它解決了keep-alive長鏈接的時候佔用線程資源被浪費的問題

 

80.寫一條192.168.10.0網段從網關192.168.9.1出去的路由

 

答:route add -net 192.168.10.0/24 gw 192.168.9.1

 

81.寫一條放行80端口的防火牆規則。

 

答:iptables -I INPUT -p tcp --dport 80 -j ACCEPT

 

82. 你公司監控(如zabbix)系統監控了哪些項目。

 

答:監控了CPU使用率、內存剩餘、磁盤使用空間、網卡流量、web服務、mysql主從、訪問日誌等

 

83. linux引導加載的前後順序是BIOS kernel GRUB MBR RAID?

 

答案:BIOS -> RAID -> MBR -> GRUB -> kernel

 

84.進程間通訊方式主要有哪幾種方式?

 

答案:1管道 2命名管道 3信號 4消息隊列 5共享內存 6信號量 7套接字

 

85.簡要說明你對內核空間和用戶空間的理解?

 

答案:這個問題有點偏開發,你們不明白沒有關係,瞭解一下便可。操做系統和驅動程序運行在內核空間,應用程序運行在用戶空間。你們能夠看看這個文章http://www.go-gddq.com/html/QianRuShiXiTong-JiShu/2012-07/1031748.htm

 

86.你用過或測試過哪些 linux/unix文件系統?

 

答案:centos5默認是ext3,centos6爲ext4,centos7爲xfs

 

87. 怎樣用命令查看3天前的CPU分核的負載數據?

 

答案:sar -f /var/log/sa/(三天前日期)  

 

88. 某命令CPU負載顯示如下各段,分別是什麼? 10.6%us,6.6%sy, 0.0%ni 74.4%id 0.0%wa

 

答案:us 用戶cpu百分比  sy內核cpu百分比  ni進程佔用百分比  id 空閒百分比 wa io等待佔用的百分比

 

89.. 列舉你知道的linux下的壓力測試程序

 

答案:測試web的工具:http_load,ab

 

專業的測試工具loadrunner

 

90. 描述linux系統下建立軟RAID5的命令和步驟

 

答案:假若有四塊硬盤 /dev/sda,/dev/sdb,/dev/sdc,/dev/sdd,分別給他們分一個主分區sda1,sdb1,sdc1和sdd1,而後建立RAID設備名爲md0, 級別爲RAID5,使用3個設備創建RAID,空餘一個作備用.

 

命令以下:

 

mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd[a-d]1

 

使用下面命令查看raid詳細信息

 

mdadm --detail /dev/md0

 

91 如何查找某一文件被哪一個進程打開?

 

答案:lsof|grep file

 

92. 新增一塊存儲設備,lvm操做的命令如何寫

 

答案:

 

將物理硬盤格式化成pv              pvcreate /dev/sdb

 

建立卷組(VG)並將pv加到VG中    vgcreate vg1 /dev/sdb

 

基於VG建立邏輯卷(LV)              lvcreate -n mylvm -L 20G vg1

 

 

 

93. 給主機host:172.16.0.2 增長gateway10.0.0.1

 

答案: route add 172.16.0.2 gw 10.0.0.1或者網卡配置文件更改

 

94.簡述linux的優化

 

【硬件方面】

 

1. cpu

 

2. 內存  (增長內存)

 

3. 存儲 (使用raid,使用ssd)

 

4. 網卡 (使用千兆網卡,或者雙網卡綁定)

 

【系統方面 】

 

1. 內核參數優化(網絡相關、內存相關、緩衝緩存相關)

 

2. 文件系統方面(分區調優,格式化時根據存儲文件特性,指定合適的塊大小,noatime,日誌隔離,軟raid,有效使用/dev/shm,關閉沒必要要的服務)

 

3. cpu優化 (進程綁定,中斷綁定)

 

numa架構cpu:  http://blog.csdn.net/jollyjumper/article/details/17168175

 

taskset 把進程和cpu綁定  http://blog.csdn.net/ttyttytty12/article/details/11726569

 

 

 

【應用程序方面】

 

1. nginx、apache、php-fpm、mysql、tomcat、squid等應用,是能夠經過調節各個參數得到性能優化的。

 

2. web優化,好比能夠把用戶請求合併(js、css合併),使用cdn加速靜態頁訪問速度,把圖片文檔壓縮減小帶寬傳輸,

 

3. 優化網站程序

 

【架構方面】

 

1. 使用簡單而且穩定的架構方案

 

2. 多使用緩存

 

10. iptables表和鏈

 

filter    INPUT FORWARD OUTPUT

 

nat      PREROUTING  POSTROUTING OUTPUT

 

mangle  PREROUTING INPUT FORWARD OUTPUT POSTROUTING

 

 

 

95.在不umount的狀況下,如何從新設置mount的參數。

 

答案:mount -o remount

 

96. 說一下公司多少臺服務器,是什麼架構

 

答案:有7臺服務器,lnmp+nginx負載+keepalived,其中2臺keepalived+2臺nginx/php-fpm+2臺mysql(一主一從)+NFS(上面兼着跑監控、備份)

 

97.提升性能和併發數,須要優化哪些內核參數

 

答案:

 

net.ipv4.tcp_max_tw_buckets = 6000  //timewait的數量,默認是180000。

 

net.ipv4.ip_local_port_range = 1024 65000  //容許系統打開的端口範圍。

 

net.ipv4.tcp_tw_reuse = 1 //容許將TIME-WAIT sockets 從新用於新的TCP 鏈接。

 

net.ipv4.tcp_syncookies = 1 //開啓SYN Cookies,當出現SYN 等待隊列溢出時,啓用cookies 來處理。

 

net.ipv4.tcp_max_orphans = 262144 //系統中最多有多少個TCP套接字不被關聯到任何一個用戶文件句柄上。若是超過這個數字,孤兒鏈接將即刻被複位並打印出警告信息。這個限制僅僅是爲了防止簡單的DoS攻擊,不能過度依靠它或者人爲地減少這個值,更應該增長這個值(若是增長了內存以後)。

 

net.ipv4.tcp_max_syn_backlog = 262144  //記錄的那些還沒有收到客戶端確認信息的鏈接請求的最大值。對於有128M內存的系統而言,缺省值是1024,小內存的系統則是128。

 

net.ipv4.tcp_synack_retries = 1  //爲了打開對端的鏈接,內核須要發送一個SYN 並附帶一個迴應前面一個SYN的ACK。也就是所謂三次握手中的第二次握手。這個設置決定了內核放棄鏈接以前發送SYN+ACK 包的數量。

 

net.ipv4.tcp_syn_retries = 1  //在內核放棄創建鏈接以前發送SYN 包的數量。

 

net.ipv4.tcp_keepalive_time = 30 //當keepalive 起用的時候,TCP 發送keepalive 消息的頻度。缺省是2 小時。

 

98.簡述tcp三次握手的過程?

 

第一次握手:創建鏈接。客戶端發送鏈接請求報文段,將SYN位置爲1,Sequence Number爲x;而後,客戶端進入SYN_SEND狀態,等待服務器的確認;

 

第二次握手:服務器收到SYN報文段。服務器收到客戶端的SYN報文段,須要對這個SYN報文段進行確認,設置Acknowledgment Number爲x+1(Sequence Number+1);同時,本身本身還要發送SYN請求信息,將SYN位置爲1,Sequence Number爲y;服務器端將上述全部信息放到一個報文段(即SYN+ACK報文段)中,一併發送給客戶端,此時服務器進入SYN_RECV狀態;

 

第三次握手:客戶端收到服務器的SYN+ACK報文段。而後將Acknowledgment Number設置爲y+1,向服務器發送ACK報文段,這個報文段發送完畢之後,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。

 

99.如何查看當前linux系統的狀態如cpu使用,內存使用,負載狀況,看到swap使用量大時,是否是意味着物理內存已不夠用?

 

答案:top命令就能夠看cpu使用、內存使用以及負載狀況,當swap使用率大時,不必定是內存不夠,若是swap容量固定不變,那內存就不是瓶頸。用vmstat 1命令看,si so兩列的數值在不斷變化時,內存就不夠了。

 

100. 如何修改ip主機名DNS?

 

修改ip和DNS在配置文件/etc/sysconfig/network-scripts/ifcfg-eth0中修改,修改主機名,在/etc/sysconfig/network中修改。

 

101.如何查看PID爲29394的進程的環境變量?

 

 cat /proc/29394/environ

 

102.當io出現瓶頸時,應該查看哪一個參數,爲何?

 

 vmstat 1 查看wa列,wa列表示處於等待狀態的cpu百分比,當IO比較慢時,CPU會有大量的wait。

 

103. 在 bash 裏 $0  $?  $*  $@各表示什麼意思?

 

$0 Shell自己的文件名

$?最後運行的命令的返回值

$*全部參數列表。如"$*"用「"」括起來的狀況、以"$1 $2 … $n"的形式輸出全部參數

$@ 全部參數列表。如"$@"用「"」括起來的狀況、以"$1" "$2" … "$n" 的形式輸出全部參數。

 

 

--------------------------------------------------------------

本身整理的,後期會持續更新·······

相關文章
相關標籤/搜索