5. 查看網路I/O命令dstat:多功能系統資源統計工具,不但可以擷取net(網路)資訊,還可以擷取disk(硬碟)\處理器(CPU)等資訊,結果可儲存為csv.
dstat的用法如下:
dstat[-afv][options..][delay[count]]使用dstat-h查看全部選項,這裡不逐一列舉,下面簡單介紹下常用選項常用選項如下:#直接跟數字,表示#秒收集一次資料,預設為一秒;dstat5表示5秒更新一次-c,--cpu統計CPU狀態,包括user,system,idle(空閑等待時間百分比),wait(等待磁碟IO),hardwareinterrupt(硬體中斷),softwareinterrupt(軟體中斷)等;-d,--disk統計磁碟讀寫狀態-Dtotal,sda統計指定磁碟或匯總資訊-l,--load統計系統負載情況,包括1分鐘、5分鐘、15分鐘平均值-m,--mem統計系統實體記憶體使用方式,包括used,buffers,cache,free-s,--swap統計swap已使用和剩餘量-n,--net統計網路使用方式,包括接收和發送資料-Neth1,total統計eth1介面匯總流量-r,--io統計I/O請求,包括讀寫請求-p,--proc統計進程資訊,包括runnable、uninterruptible、new-y,--sys統計系統資訊,包括中斷、環境切換-t顯示統計時時間,對分析曆史資料非常有用--fs統計檔案開啟數和inodes數
查看網路命令為下
1dstat-Nlo,eth01005解釋:指定查看Lo和eth0網卡,每條資料存在100秒(每一秒即時重新整理資料,這個頻率貌似不能改),共重新整理5條.
6. memcache運行原理7. 當一個網站訪問慢時,你怎麼去最佳化 ###
翻譯為: 當一個網站訪問慢時, 你都是怎麼去尋找問題,和解決問題以達到最佳化效果的
第一,用5分鐘排除網路因素,藉助工具(如pagespeed)分析頁面載入過程
1. 某個元素或者圖片載入過慢: 具體原因具體分析
2. DNS解析時間長度問題: 可以通過購買解析服務, 來讓自己的網域名稱在各地DNS更多緩衝
3. 網路頻寬瓶頸: 考慮增加頻寬
4. 網路線路波動: 考慮CDN,或者鏡像站
第二,要考慮到伺服器問題
1. 是否有伺服器過載: 考慮增加硬體
2. I/O操作:資料庫的頻繁讀寫,伺服器的頻繁請求(包括靜態檔案的讀取,圖片的讀取)等都屬於I/O問題。對於資料庫的問題,首先要最佳化SQL,預存程序等。如果單表資料量過大要考慮做分割或者運用程式來控制分表。如果請求量過大,要考慮做叢集。對於伺服器(靜態)檔案的I/O問題,則可以考慮做CDN,這樣也可以解決地區性問題。對於動態檔案的訪問,則涉及到代碼最佳化及負載平衡兩項。
3. 具體應用最佳化: nginx針對訪問量修改設定檔,調高Buffers 調低keep alive空連線時間等
第三,安全方面
1. 查看web\mail等其它服務日誌,是否存在被攻擊現象: 針對安全方面加固
2. 是否有其它攻擊存在DDOS,WEB CC等
8. mysql主從不同步怎麼解決
在master端執行:
mysql>flushlogs;mysql>showmasterstatus;PS:記下File、Position的值。
在slave端執行:
mysql>stopslave;mysql>CHANGEMASTERTOMASTER_LOG_FILE='bin-log.000002',MASTER_LOG_POS=107;mysql>startslave;mysql>showslavestatus
sql命令手動同步,還有一種方法是跳過這個導致錯誤的事物
跳過指定數量的事務:
mysql>slavestop;mysql>SETGLOBALSQL_SLAVE_SKIP_COUNTER=1#跳過一個事務mysql>slavestart
修改mysql的設定檔,通過slave_skip_errors參數來跳所有錯誤或指定類型的錯誤
vi/etc/my.cnf[mysqld]slave-skip-errors=1062,1053,1146#跳過指定errorno類型的錯誤slave-skip-errors=all#跳過所有錯誤
9. 進程和線程的區別
翻譯: 進程和線程的概念
進程(英語:process),是電腦中已運行程式的實體。進程是程式的基本執行實體,進程本身不是基本運行單位,而是線程的容器
線程(英語:thread)是作業系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流程,一個進程中可以並發多個線程,每條線程並存執行不同的任務。
① 進程是系統進行資源分派的基本單位,有獨立的記憶體位址空間; 線程是CPU調度的基本單位,沒有單獨地址空間,有獨立的棧,局部變數,寄存器, 程式計數器等。
② 建立進程的開銷大,包括建立虛擬位址空間等需要大量系統資源; 建立線程開銷小,基本上只有一個核心對象和一個堆棧。
③ 一個進程無法直接存取另一個進程的資源;同一進程內的多個線程共用進程的資源。
④ 進程切換開銷大,線程切換開銷小;處理序間通訊開銷大,線程間通訊開銷小。
⑤ 線程屬於進程,不能獨立執行。每個進程至少要有一個線程,成為主線程
10. 常用的RAID原理RAID 0連續以位或位元組為單位分割資料,並行讀/寫於多個磁碟上,因此具有很高的資料轉送率,但它沒有資料冗餘,因此並不能算是真正的RAID 結構。RAID 0 只是單純地提高效能,並沒有為資料的可靠性提供保證,而且其中的一個磁碟失效將影響到所有資料。因此,RAID 0 不能應用於資料安全性要求高的場合。
RAID 1它是通過磁碟資料鏡像實現資料冗餘,在成對的獨立磁碟上產生互為備份的資料。當未經處理資料繁忙時,可直接從鏡像拷貝中讀取資料,因此RAID 1 可以提高讀取效能。RAID 1是磁碟陣列中單位成本最高的,但提供了很高的資料安全性和可用性。當一個磁碟失效時,系統可以自動切換到鏡像磁碟上讀寫,而不需要重組失效的資料。簡單來說就是:鏡象結構,類似於備份模式,一個資料被複製到兩塊硬碟上。
RAID 10高可靠性與高效磁碟結構一個帶區結構加一個鏡象結構,因為兩種結構各有優缺點,因此可以相互補充。主要用於容量不大,但要求速度和差錯控制的資料庫中。
RAID 5分布式同位的獨立磁碟結構,它的同位碼存在於所有磁碟上,任何一個硬碟損壞,都可以根據其它硬碟上的校正位來重建損壞的資料。支援一塊盤掉線後仍然正常運行。
11. 有沒有做過效能調優這個是個大的話題,要反問是應用調優還是系統調優 沒有進行過調優,基本調優步驟:
1. 找出系統效能瓶頸(包括硬體瓶頸和軟體瓶頸);
2. ***能最佳化的方案(升級硬體?改進系統系統結構?);
3. 達到合理的硬體和軟體配置;
4. 使系統資源使用達到最大的平衡。
12. 請求一個網站的過程網域名稱解析 --> 發起TCP的3次握手 --> 建立TCP串連後發起http請求 --> 伺服器響應http請求,瀏覽器得到html代碼 --> 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現給使用者
13. lvs/dr調度的過程用戶端請求發送給LVS ==> LVS接受請求後根據調度演算法選出後台伺服器 ==> LVS將報文目標MAC地址修改為該伺服器 ==> 伺服器處理請求後直接返回給用戶端
14. 我想查看WEB日誌中訪問TOP 10的IP有哪些怎麼查看當時是面試官讓我把具體命令說出來, 也就是看看知道一些處理文本的命令嘛.其實不難:
catlogfile|cut-d''-f5|sort|uniq-c|sort-nr|head-n10|lesscut命令負責將文本以空格分開,取第五列資料==>
排序==> 去重並統計次數(-c參數就是統計參數)==> 再次排序(統計次數會被寫在IP之前, 所以這裡是按統計次數排序 sort的-r是逆序就是從大到小,-n為按數字排序主要是sort預設排序很可能會把10判斷為比2還小,通過-n就不會出現這個情況)==> 取次數最多的10條==> less可有可無
15. CDN的主要原理CDN是一種組合技術,主要包含以下3個方面:
① 來源站點
來源站點指發布內容的原始網站。添加、刪除和更改網站的檔案,都是在來源站點上進行的;另外快取服務器所抓取的對象也全部來自於來源站點。
② 快取服務器
快取服務器是直接提供給使用者訪問的網站資源,有一台或數台伺服器組成;當使用者發起訪問時,他的訪問請求被智能DNS定位到離他較近的快取服務器。如果使用者所請求的內容剛好在緩衝裡面,則直接把內容返還給使用者;如果訪問所需的內容沒有被緩衝,則快取服務器向鄰近的快取服務器或直接向來源站點抓取內容,然後再返還給使用者。
③ 智能DNS
智能DNS是整個CDN技術的核心,它主要根據使用者的來源,將其訪問請求指向離使用者比較近的快取服務器,如把廣州電信的使用者請求指向到廣州電信IDC機房中的快取服務器。通過智能DNS解析,讓使用者訪問同服務商下的伺服器,消除國內南北網路互相訪問慢的問題,達到加速作用。智能DNS的出現,顛複了傳統的一個網域名稱對應一個鏡像的做法,讓使用者更加便捷的去訪問網站。
快取服務器中有訪問內容:
用戶端請求 ==> 智能DNS解析到最近的快取服務器 ==> 快取服務器返回請求資源
快取服務器中無訪問內容:
用戶端請求 ==> 智能DNS解析到最近的快取服務器 ==> 快取服務器發現沒有用戶端請求資源,向來源站點請求 ==> 來源站點返回資源到快取服務器 ==> 快取服務器返回用戶端請求資源
16. 跨伺服器同步檔案當時面試官原問題是, "將某一個檔案夾的所有圖片(不同類型jpg|png)同步到另一台伺服器的",當時我那個不會啊...只憋出個find命令含含糊糊的說了下.
回來趕緊複習了下, 其實就兩個內容, 一個是怎麼尋找到這個檔案, 一個是怎麼去同步到另一台伺服器:
怎麼尋找:
1. ls命令 + grep命令
ls/tmp/test|grep".*\.jpg\|.*\.png"最簡單易懂, 只不過ls並不是尋找命令, 所以這條命令也只是去查看了/tmp/test檔案夾下的有哪些檔案,並沒有對/tmp/test下的子目錄去搜尋.
2. find命令
find/tmp/test-typef-regex'.*\.jpg\|.*\.png'最常用的尋找命令, 可以通過指定正則\檔案類型\檔案大小\檔案許可權\檔案屬主屬組\檔案時間等對檔案匹配尋找.
還有一些locate\whereis等等比較另類的命令,都可以用,只要你能定位到你的檔案就可以,這裡就不一一舉例.
怎麼同步:
通過管道將尋找交給負責同步的命令
xargs + scp命令
ls/tmp/test|grep".*\.jpg\|.*\.png"|xargs-n1-I{}scp{}root@192.168.1.97:/tmpfind/tmp/test-typef-regex'.*\.jpg\|.*\.png'|xargs-n1-I{}scp{}root@192.168.1.97:/tmp使用xargs接收管線標準輸入,然後執行遠程拷貝命令.
find命令 + scp命令
find/tmp/test-typef-regex'.*\.jpg\|.*\.png'-execscp{}root@192.168.1.97:/tmp\;也可以配合xargs命令完成
find/tmp/test-typef-regex'.*\.jpg\|.*\.png'|xargs-n1-I{}scp{}root@192.168.1.97:/tmp這兩條效果一樣的,執行過程都是建立子進程逐個檔案scp.比較坑的是, 你要使用scp檔案的話,沒有秘鑰認證遠程主機的話,每個檔案都要輸一次密碼...
rsync同步 普通rsync同步:
find/tmp/test-typef-regex'.*\.jpg\|.*\.png'|xargs-n1-I{}rsync{}root@192.168.1.97:/tmp上傳rsync server同步(需要遠程主機已搭建rsync伺服器):
find/tmp-typef-regex'.*\.jpg\|.*\.png'|xargs-n1-I{}rsync-avzP{}wys@192.168.1.98::wys以上的兩條和scp一樣需要逐個密碼認證,而rsync有--password-file指定密碼檔案(注意密碼檔案許可權必須600,否則會報錯)來戴我們認證密碼,像這樣:
find/tmp-typef-regex'.*\.jpg\|.*\.png'|xargs-n1-I{}rsync-avzP{}--password-file=/tmp/wys.passwordwys@192.168.1.98::wys同步的命令或者服務也有很多,但是像這種臨時性的不是很大量的使用我覺得最多rsync就夠了.
涉及到到知識:
rsync伺服器搭建:參考一|參考二
rsync命令:參考一
find命令:參考一
xargs命令:參考一注意這篇裡邊-I參數例子中有個錯誤少寫了替換字串,應該是:
...-I{}CMD{}XXX...17. mysql增刪改查基礎問題(筆試基礎)
增
INSERTINTO表名稱VALUES(值1,值2,...);#按列的順序將值依次賦給對應列的對象INSERTINTO表名稱(列1,列2)VALUES(值1,值2);#對應列插入相應值
刪
DELETEFROM表名稱WHERE列運算子值;#例:DELETEFROMtabWHEREname=job;匹配到name列值為job的一條記錄,刪除它DELETE*FROM表名稱;#清空表
改
UPDATE表名稱SET列名稱=新值WHERE列=值;例:UPDATEtabSETname=easonWHEREid=3;匹配到id列值為3的記錄,修改該記錄name的值為eason
查
SELECT列名稱1,列名稱2...FROM表名稱;#指定列查詢SELECT*FROM表名稱;#查詢表所有內容SELECT列名稱FROM表名稱WHERE列運算子值;#例:SELECTnameFROMtabWHEREid<10;匹配到tab的id列小於10的記錄,查看這些記錄name列的值SELECTDISTINCT列名稱FROM表名稱;#刪除返回結果的重複項SELECT*FROM表名稱ORDERBY列名稱;#按照某一列排序(從小到大順序)SELECT*FROM表名稱ORDERBY列名稱DESC;#按照某一列排序(倒序)
18. 伺服器更換主板後linux無法識別網卡系統載入網卡驅動後會去讀一個檔案,這個檔案是一個快取檔案,包含了網卡的mac地址,因為更換了主板,網卡的mac也變動了,但是這個檔案的mac還是沒有變,所以現有的網卡mac地址和檔案裡的不同,所以系統就拒絕啟動,把這個檔案刪除後重啟系統就可以了 操作為下:
>#mv/etc/udev/rules.d/70-persistent-net.rules/etc/udev/rules.d/70-persistent-net.rules.bak>#reboot#重啟後會產生新的快取檔案