-
MySQL 最樸素的監(jiān)控方式!用完愛不釋手
對于當(dāng)前數(shù)據(jù)庫的監(jiān)控方式有很多,分為數(shù)據(jù)庫自帶、商用、開源三大類,每一種都有各自的特色;而對于 mysql 數(shù)據(jù)庫由于其有很高的社區(qū)活躍度,監(jiān)控方式更是多種多樣,不管哪種監(jiān)控方式最核心的就是監(jiān)控數(shù)據(jù),獲取得到全面的監(jiān)控數(shù)據(jù)后就是靈活的展示部分。 那我們今天就介紹一下完全采用 mysql 自有方式采集獲取監(jiān)控數(shù)據(jù),在單體下達(dá)到最快速、方便、損耗最小。 本次文章完全使用 mysql 自帶的 show 命令實(shí)現(xiàn)獲取,從?connects、buffercache、lock、SQL、statement、D…
-
Go語言高并發(fā)時append方法偶現(xiàn)錯誤的解決方法
在實(shí)現(xiàn)圖片轉(zhuǎn)碼的需求時,需要支持最大 500 個圖片下載后轉(zhuǎn)換格式; 如果是一個一個下載后轉(zhuǎn)碼,耗時太長,需要使用 goroutine 實(shí)現(xiàn) 500 個圖片并發(fā)下載后,并發(fā)轉(zhuǎn)碼; 但自測過程中發(fā)現(xiàn),會偶現(xiàn)下載后只轉(zhuǎn)換了 499 個圖片或更少的情況(全部下載、轉(zhuǎn)碼成功的條件下); 然后就開始了打印日志找 bug 的過程。 排查問題 因?yàn)椴l(fā)時使用到了 sync 等待全部協(xié)程結(jié)束,起初以為是 sync 異步等待出了問題; 打印日志發(fā)現(xiàn),正常執(zhí)行了 500 次下載,執(zhí)行完成下載之后,繼續(xù)執(zhí)行的轉(zhuǎn)碼操作…
-
如何在 Linux 下使用 TC 優(yōu)雅的實(shí)現(xiàn)網(wǎng)絡(luò)限流
1. Linux 下的流量控制原理 通過對包的排隊(duì),我們可以控制數(shù)據(jù)包的發(fā)送方式。這種控制,稱之為數(shù)據(jù)整形,shape the data,包括對數(shù)據(jù)的以下操作: 增加延時 丟包 重新排列 重復(fù)、損壞 速率控制 在 qdisc-class-filter 結(jié)構(gòu)下,對流量進(jìn)行控制需要進(jìn)行三個步驟: 創(chuàng)建 qdisc 隊(duì)列 上面提到 Linux 是通過包的排隊(duì)進(jìn)行流量的控制,那么首先得有一個隊(duì)列。 創(chuàng)建 class 分類 class 實(shí)際上,就是劃分流量策略分類。比如劃分兩檔流量限速 10MBps、20…
-
LINUX內(nèi)核網(wǎng)絡(luò)中的軟中斷KSOFTIRQD
1. 前言 之前分享過Linux內(nèi)核網(wǎng)絡(luò)數(shù)據(jù)包的接收過程,當(dāng)執(zhí)行到網(wǎng)卡通過硬件中斷(IRQ)通知CPU,告訴它有數(shù)據(jù)來了,CPU會根據(jù)中斷表,調(diào)用已經(jīng)注冊的中斷函數(shù),這個中斷函數(shù)會調(diào)到驅(qū)動程序(NIC Driver)中相應(yīng)的函數(shù)。驅(qū)動先禁用網(wǎng)卡的中斷,表示驅(qū)動程序已經(jīng)知道內(nèi)存中有數(shù)據(jù)了,告訴網(wǎng)卡下次再收到數(shù)據(jù)包直接寫內(nèi)存就可以了,不要再通知CPU了,這樣可以提高效率,避免CPU不停的被中斷。 由于硬中斷處理程序執(zhí)行的過程中不能被中斷,所以如果它執(zhí)行時間過長,會導(dǎo)致CPU沒法響應(yīng)其它硬件的中斷,于…
-
Iptables 介紹與使用
連接跟蹤(conntrack) 連接跟蹤是許多網(wǎng)絡(luò)應(yīng)用的基礎(chǔ)。例如,Kubernetes Service、ServiceMesh sidecar、 軟件四層負(fù)載均衡器 LVS/IPVS、Docker network、OVS、iptables 主機(jī)防火墻等等,都依賴連接跟蹤功能。 連接跟蹤,顧名思義,就是跟蹤(并記錄)連接的狀態(tài)。例如,圖 1.1 是一臺 IP 地址為 10.1.1.2 的 Linux 機(jī)器,我們能看到這臺機(jī)器上有三條 連接: 機(jī)器訪問外部 HTTP 服務(wù)的連接(目的端口 80) …
-
Go 語言開源項(xiàng)目使用的函數(shù)選項(xiàng)模式
01? 介紹 在閱讀 Go 語言開源項(xiàng)目的源碼時,我們可以發(fā)現(xiàn)有很多使用 “函數(shù)選項(xiàng)模式” ?的代碼,“函數(shù)選項(xiàng)模式” 是 Rob Pike 在 2014 年提出的一種模式,它使用 Go 語言的兩大特性,變長參數(shù)和閉包,可以使我們代碼更優(yōu)雅。 關(guān)于變長參數(shù)和閉包的介紹,需要的讀者朋友們可以查閱歷史文章,本文我們介紹 “函數(shù)選項(xiàng)模式” 的相關(guān)內(nèi)容。 02? 使用方式 在介紹“函數(shù)選項(xiàng)模式”的使用方式之前,我們先閱讀以下這段代碼。 type?User?struct?{ ????Id?int ????…
-
關(guān)于DDoS攻擊,這些基本概念你一定要知道!
不少小伙伴在學(xué)習(xí)DDoS攻擊的攻防原理的時候會覺得略顯吃力。這主要是因?yàn)槔斫庠硎切枰攘私馄涓拍畹摹?本篇文章是一篇關(guān)于DDoS的技術(shù)普及帖,關(guān)于DDoS基本概念,看這一篇就夠了~ 什么是DDoS攻擊 DDoS是Distributed Denial of Service的簡稱,中文是分布式拒絕服務(wù)。 這有點(diǎn)拗口吧? 這樣,我們先理解下DDoS的前身DoS(Denial of Service),即拒絕服務(wù)。 最基本的DoS攻擊就是攻擊者利用大量合理的服務(wù)請求來占用攻擊目標(biāo)過多的服務(wù)資源,從而使合…
-
最好用的開源Web漏掃工具梳理
如果你剛好是某個網(wǎng)絡(luò)應(yīng)用程序的所有者,怎樣才能保證你的網(wǎng)站是安全的、不會泄露敏感信息? 如果是基于云的安全解決方案,那么可能只需要進(jìn)行常規(guī)漏掃。但如果不是,我們就必須執(zhí)行例行掃描,采取必要的行動降低安全風(fēng)險。 當(dāng)然很多付費(fèi)掃描器功能會更加全面、嚴(yán)謹(jǐn),包含報表輸出、警報、詳細(xì)的應(yīng)急指南等等附加功能。 開源工具最大的缺點(diǎn)是漏洞庫可能沒有付費(fèi)軟件那么全面。 1. Arachni Arachni是一款基于Ruby框架搭建的高性能安全掃描程序,適用于現(xiàn)代Web應(yīng)用程序??捎糜贛ac、Windows及Lin…
-
14 個必須掌握的數(shù)據(jù)庫面試問題
1 為什么使用數(shù)據(jù)索引能提高效率 數(shù)據(jù)索引的存儲是 有序的 在有序的情況下, 通過索引查詢一個數(shù)據(jù)是無需遍歷索引記錄的 極端情況下,數(shù)據(jù)索引的查詢效率為二分法查詢效率,趨近于log2(N) 2 B+樹索引和哈希索引的區(qū)別 B+樹是一個平衡的多叉樹,從根節(jié)點(diǎn)到每個葉子節(jié)點(diǎn)的高度差值不超過1,而且同層級的節(jié)點(diǎn)間有指針相互鏈接,是有序的,如下圖: 哈希索引就是采用一定的哈希算法,把鍵值換算成新的哈希值,檢索時不需要類似B+樹那樣從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)逐級查找,只需一次哈希算法即可,是無序的,如下圖所示: …
-
20 個最重要的 DevOps 面試題
DevOps 代表開發(fā)和運(yùn)營。這是一種新的軟件開發(fā)形式,徹底改變了軟件產(chǎn)品的開發(fā)和分發(fā)方式。DevOps方法論著眼于提供頻繁的較小升級,而不是罕見的大型功能集。 IT運(yùn)營受益于DevOps。在DevOps出現(xiàn)之前,IT團(tuán)隊(duì)仍然存在一些內(nèi)在的擔(dān)憂。這導(dǎo)致IT團(tuán)隊(duì)面臨某種程度的意外懷疑。 但是,隨著DevOps的加入,這一切都發(fā)生了變化,這使IT運(yùn)營部門可以與組織的其他部門共享這些問題,從而提高了透明度,并提高了IT運(yùn)營部門與其他團(tuán)隊(duì)之間的協(xié)調(diào)性。 以下部分介紹了前20個DevOps面試問題,這些問…