我们处理了10亿个Java记录的错误-这是导致97%的错误的原因
97%的記錄錯(cuò)誤是由10個(gè)唯一錯(cuò)誤引起的
在2016年,一件事已經(jīng)30年沒(méi)有改變了。 開(kāi)發(fā)和運(yùn)營(yíng)團(tuán)隊(duì)仍依靠日志文件對(duì)應(yīng)用程序問(wèn)題進(jìn)行故障排除。 由于某些未知原因,我們隱式地信任日志文件,因?yàn)槲覀冋J(rèn)為事實(shí)隱藏在其中。 如果您足夠努力地進(jìn)行g(shù)rep編寫(xiě)或編寫(xiě)完美的regex查詢,答案將神奇地呈現(xiàn)在您面前。
是的,諸如Splunk,ELK和Sumologic之類的工具已使搜索日志變得更快,但所有這些工具都受一件事–操作噪音的困擾。 運(yùn)營(yíng)噪音是當(dāng)今IT和您的企業(yè)的無(wú)聲殺手。 這就是為什么無(wú)法發(fā)現(xiàn)應(yīng)用程序問(wèn)題并需要花費(fèi)數(shù)天才能解決的原因。
新帖子:我們處理了10億個(gè)Java記錄的錯(cuò)誤-這是導(dǎo)致97%的錯(cuò)誤的原因https://t.co/fFht52vkp1 pic.twitter.com/ddHdrTRCjA
— Takipi(@takipid) 2016年5月24日
日志現(xiàn)實(shí)
這是現(xiàn)實(shí),您只會(huì)記錄認(rèn)為會(huì)破壞應(yīng)用程序的內(nèi)容,并且會(huì)受到記錄的數(shù)量的限制,而不會(huì)在應(yīng)用程序上產(chǎn)生不必要的開(kāi)銷(xiāo)。 這就是為什么通過(guò)日志記錄進(jìn)行調(diào)試在生產(chǎn)環(huán)境中不起作用以及為什么大多數(shù)應(yīng)用程序問(wèn)題都未被發(fā)現(xiàn)的原因。
假設(shè)您確實(shí)設(shè)法找到了所有相關(guān)的日志事件,但這還不是故事的結(jié)尾。 通常,所需的數(shù)據(jù)通常不在其中,并且您還可以添加其他日志記錄語(yǔ)句,創(chuàng)建新的構(gòu)建,測(cè)試,部署并希望錯(cuò)誤再次發(fā)生。 哎喲。
分析時(shí)間
在Takipi,我們捕獲并分析生產(chǎn)中Java應(yīng)用程序拋出的每個(gè)錯(cuò)誤或異常。 通過(guò)分析Takipi監(jiān)視的1,000多個(gè)應(yīng)用程序,我發(fā)現(xiàn)了這些實(shí)用信息。
高層次的總體發(fā)現(xiàn):
- 平均 Java應(yīng)用程序每月將引發(fā)920萬(wàn)個(gè)錯(cuò)誤
- 平均 Java應(yīng)用程序每月產(chǎn)生大約2.7TB的存儲(chǔ)
- 平均 Java應(yīng)用程序每月包含53個(gè)唯一錯(cuò)誤
- 按頻率列出的前10個(gè)Java錯(cuò)誤分別是
- 空指針異常
因此,有了它,討厭的NullPointerException就應(yīng)該歸咎于日志文件中所有損壞的內(nèi)容。 具有諷刺意味的是,檢查null是2004年我是一名Java開(kāi)發(fā)人員時(shí)在我的第一次代碼審查中獲得的第一個(gè)反饋。
是的,以下是過(guò)去30天中隨機(jī)選擇的企業(yè)生產(chǎn)應(yīng)用程序中的一些數(shù)據(jù):
- 25個(gè)JVM
- 29,965,285個(gè)錯(cuò)誤
- 約8.7TB的存儲(chǔ)空間
- 353個(gè)唯一錯(cuò)誤
- Java發(fā)生頻率最高的錯(cuò)誤是:
- NumberFormatException
故障排除時(shí)間(射擊)
因此,您從事開(kāi)發(fā)或運(yùn)營(yíng)工作,并且被要求對(duì)上述每天產(chǎn)生一百萬(wàn)個(gè)錯(cuò)誤的應(yīng)用程序進(jìn)行故障排除,該怎么辦? 好吧,讓我們放大應(yīng)用程序出現(xiàn)問(wèn)題的時(shí)間嗎?
讓我們選擇一個(gè)15分鐘的時(shí)間段。 但是,在那15分鐘內(nèi),您仍然會(huì)看到10,416個(gè)錯(cuò)誤。 您現(xiàn)在看到了稱為操作噪音的問(wèn)題嗎? 這就是為什么人類今天要努力檢測(cè)應(yīng)用程序并對(duì)其進(jìn)行故障排除……并且不會(huì)變得更加簡(jiǎn)單。
如果我們只修復(fù)了10個(gè)錯(cuò)誤該怎么辦?
現(xiàn)在,假設(shè)我們?cè)谏鲜鰬?yīng)用程序中修復(fù)了10個(gè)錯(cuò)誤。 您認(rèn)為這10個(gè)錯(cuò)誤對(duì)應(yīng)用程序每月產(chǎn)生的錯(cuò)誤計(jì)數(shù),存儲(chǔ)和操作噪聲有何減少?
1%,5%,10%,25%,50%?
大約97.3% 。 是的,你讀過(guò)。 在此應(yīng)用程序中僅修復(fù)10個(gè)錯(cuò)誤將減少97.3%的錯(cuò)誤計(jì)數(shù),存儲(chǔ)和操作噪聲。
在過(guò)去30天內(nèi)拋出的總29,965,285個(gè)錯(cuò)誤中,該應(yīng)用程序中按頻率排列的前10個(gè)錯(cuò)誤負(fù)責(zé)29,170,210個(gè)錯(cuò)誤。
廢話少說(shuō)
絕大多數(shù)應(yīng)用程序日志文件包含重復(fù)的廢話,您需要支付這些廢話來(lái)管理IT環(huán)境中的每一天。
您支付:
- 磁盤(pán)存儲(chǔ)以托管服務(wù)器上的日志文件
- 日志管理軟件許可證可通過(guò)網(wǎng)絡(luò)解析,傳輸,索引和存儲(chǔ)此數(shù)據(jù)
- 運(yùn)行您的日志管理軟件的服務(wù)器
- 人類來(lái)分析和管理這種運(yùn)行噪音
解決操作噪聲的最簡(jiǎn)單方法是修復(fù)應(yīng)用程序錯(cuò)誤而不是忽略它們。 這不僅可以極大地改善團(tuán)隊(duì)的運(yùn)營(yíng)洞察力,還可以幫助他們發(fā)現(xiàn)更多問(wèn)題并更快地進(jìn)行故障排除,因?yàn)樗麄儗?shí)際上會(huì)看到損害您的應(yīng)用程序和業(yè)務(wù)的事物。
解決方案
如果要確定并修復(fù)應(yīng)用程序中的前10個(gè)錯(cuò)誤,請(qǐng)免費(fèi)下載Takipi ,將其粘貼在幾個(gè)生產(chǎn)JVM上,等待幾個(gè)小時(shí),按頻率對(duì)捕獲的錯(cuò)誤進(jìn)行排序,然后單擊一下Takipi將向您顯示確切的錯(cuò)誤。引起它們的源代碼,對(duì)象和變量值。 您的開(kāi)發(fā)人員將在幾個(gè)小時(shí)內(nèi)就能進(jìn)行所需的修復(fù),而B(niǎo)ob將成為您的叔叔 。
下次在生產(chǎn)環(huán)境中進(jìn)行代碼部署時(shí),Takipi將立即通知您所引入的新錯(cuò)誤,您可以重復(fù)此過(guò)程。 我們通過(guò)兩種方式在Takipi使用Takipi來(lái)檢測(cè)SaaS平臺(tái)中的新錯(cuò)誤:
Slack實(shí)時(shí)通知 ,可在發(fā)生錯(cuò)誤時(shí)立即通知我們的團(tuán)隊(duì)生產(chǎn)中出現(xiàn)的每一個(gè)新錯(cuò)誤,并提供一鍵式鏈接以準(zhǔn)確地找出根本原因(導(dǎo)致錯(cuò)誤的源代碼,對(duì)象和變量值)。
電子郵件部署摘要報(bào)告顯示了前5大新錯(cuò)誤,并直接鏈接到確切的根本原因。
最后的想法
我們一次又一次地看到,生產(chǎn)中最重要的幾個(gè)記錄錯(cuò)誤正在浪費(fèi)大部分時(shí)間并記錄了資源。 這些最嚴(yán)重的事件造成的損害(每次發(fā)生數(shù)百萬(wàn)次)與解決這些問(wèn)題所花費(fèi)的時(shí)間和精力不成比例。
本周晚些時(shí)候,我們將發(fā)布導(dǎo)致這些錯(cuò)誤的十大異常類型。 敬請(qǐng)關(guān)注。
翻譯自: https://www.javacodegeeks.com/2016/05/crunched-1-billion-java-logged-errors-heres-causes-97.html
總結(jié)
以上是生活随笔為你收集整理的我们处理了10亿个Java记录的错误-这是导致97%的错误的原因的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 旧电脑搭建云盘(旧电脑做云盘)
- 下一篇: java 代码冲突检测_Java中常见的