1.ELK的性能怎麼樣
其實(shí)這壓根就是一個(gè)不正確的提問。ELK 并不是一個(gè)軟件而是一個(gè)并不耦合的套件。所以,我們需要分拆開討論這三個(gè)軟件的性能如何?怎么優(yōu)化?
LogStash 的性能,是最讓新人迷惑的地方。因?yàn)?LogStash 本身并不維護(hù)隊(duì)列,所以整個(gè)日志流轉(zhuǎn)中任意環(huán)節(jié)的問題,都可能看起來像是 LogStash 的問題。這里,需要熟練使用本節(jié)說的測試方法,針對(duì)自己的每一段配置,都確定其性能。另一方面,就是本書之前提到過的,LogStash 給自己的線程都設(shè)置了單獨(dú)的線程名稱,你可以在 top -H 結(jié)果中查看具體線程的負(fù)載情況。
Elasticsearch 的性能。這里最需要強(qiáng)調(diào)的是:Elasticsearch 是一個(gè)分布式系統(tǒng)。從來沒有分布式系統(tǒng)要跟人比較單機(jī)處理能力的說法。所以,更需要關(guān)注的是:在確定的單機(jī)處理能力的前提下,性能是否能做到線性擴(kuò)展。當(dāng)然,這不意味著說提高處理能力只能靠加機(jī)器了——有效利用 mapping API 是非常重要的。不過暫時(shí)就在這里講述了。
Kibana 的性能。通常來說,Kibana 只是一個(gè)單頁 Web 應(yīng)用,只需要 nginx 發(fā)布靜態(tài)文件即可,沒什么性能問題。頁面加載緩慢,基本上是因?yàn)?Elasticsearch 的請(qǐng)求響應(yīng)時(shí)間本身不夠快導(dǎo)致的。不過一定要細(xì)究的話,也能找出點(diǎn) Kibana 本身性能相關(guān)的話題:因?yàn)?Kibana3 默認(rèn)是連接固定的一個(gè) ES 節(jié)點(diǎn)的 IP 端口的,所以這里會(huì)涉及一個(gè)瀏覽器的同一 IP 并發(fā)連接數(shù)的限制。其次,就是 Kibana 用的 AngularJS 使用了 Promise.then 的方式來處理 HTTP 請(qǐng)求響應(yīng)。這是異步的。