成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

記一次MongoDB性能問題,附原理解析

數(shù)據(jù)庫 其他數(shù)據(jù)庫 MongoDB
下面文章轉載自火丁筆記,原作者描述了一次MongoDB數(shù)據(jù)遷移過程中遇到的性能問題及其解決方案,中間追查問題的方法和工具值得我們學習。

下面文章轉載自火丁筆記,原作者描述了一次MongoDB數(shù)據(jù)遷移過程中遇到的性能問題及其解決方案,中間追查問題的方法和工具值得我們學習。

下面是其原文:

最近忙著把一個項目從MySQL遷移到MongoDB,在導入舊數(shù)據(jù)的過程中,遇到了些許波折,犯了不少錯誤,但同時也學到了不少知識,遂記錄下來。

公司為這個項目專門配備了幾臺高性能務器,清一色的雙路四核超線程CPU,外加32G內存,運維人員安裝好MongoDB后,就輪到我了,我習慣于在使用新服務器前先看看相關日志,了解一下基本情況,當我瀏覽MongoDB日志時,發(fā)現(xiàn)一些警告信息:

  1. WARNING: You are running on a NUMA machine. 
  2. We suggest launching mongod like this to avoid performance problems: 
  3. numactl --interleave=all mongod [other options] 
當時我并不太清楚NUMA是什么東西,所以沒有處理,只是把問題報告給了運維人員,事實證明運維人員也沒有處理,所以問題的序幕就這樣拉開了…

遷移工作首先要導入舊數(shù)據(jù)。開始一切倒還正常,不過幾小時之后,我無意中發(fā)現(xiàn)不知道什么時候開始數(shù)據(jù)導入的速度下降了,同時我的PHP腳本開始不停的拋出異常:

  1. cursor timed out (timeout: 30000, time left: 0:0, status: 0) 

我一時判斷不出問題所在,想想先在PHP腳本里加大Timeout的值應付一下:

  1. MongoCursor::$timeout = -1; 

可惜這樣并沒有解決問題,錯誤反倒變著花樣的出現(xiàn)了:

  1. max number of retries exhausted, couldn't send query 
  2. couldn't send query: Broken pipe 
無奈之下用strace跟蹤了一下PHP腳本:
  1. shell> strace -p  

發(fā)現(xiàn)進程卡在了recvfrom操作上:

  1. recvfrom(, 

通過如下命令查詢recvfrom操作的含義是:receive a message from a socket

  1. shell> apropos recvfrom 

還可以按照下面的方式確認一下:

  1. shell> lsof -p 
  2. shell> ls -l /proc//fd/ 
此時查詢MongoDB當前操作,發(fā)現(xiàn)幾乎每個操作會消耗大量的時間:
  1. shell> echo "db.currentOp()" | /path/to/mongo 

同時運行mongostat顯示很高的locked值。

重復做了很多工作,但始終無法找到問題的癥結在哪里,只好求助官方論壇,那里的技術支持都很熱心,在我描述了問題后,沒過多久就有了回復,建議我檢查一下是不是索引不佳所致,為了驗證這種可能,我激活了Profiler記錄慢操作:

  1. mongo> use 
  2. mongo> db.setProfilingLevel(1); 
不過結果顯示基本都是insert操作(因為我是導入數(shù)據(jù)為主),本身就不需要索引:
  1. mongo> use 
  2. mongo> db.system.profile.find().sort({$natural:-1}) 
  3. … 
問 題到了這里,似乎已經(jīng)走投無路了,為了死馬當活馬醫(yī),我又重復了幾次遷移舊數(shù)據(jù)的過程,結果自然是次次都出問題,但幸運的是我發(fā)現(xiàn)每當出問題的時候,在 top命令的結果中,總有一個名叫irqbalance的進程居高不下,搜索了一下,結果很多介紹irqbalance的文章中都提及了NUMA,讓我一 下子記起之前在日志中看到的警告信息,于是乎按照信息里介紹的,重新啟動了一下MongoDB:
  1. shell> numactl --interleave=all /path/to/mongod 

一切都正常了。為了解決這個問題,浪費了很多精神,實在沒有力氣再解釋NUMA到底是什么東西了,有想了解的網(wǎng)友可以參考老外的文章,里面的介紹很翔實。

對于罪魁禍首,作者留給大家去學習,在這里可以給大家做一個簡單的描述,先解釋幾個概念

NUMA:NUMA是多核心CPU架構中的一種,其全稱為Non-Uniform Memory Access,簡單來說就是在多核心CPU中,機器的物理內存是分配給各個核的,架構簡圖如下所示:

每個核訪問分配給自己的內存會比訪問分配給其它核的內存要快,有下面幾種訪問控制策略:

  • 1.缺省(default):總是在本地節(jié)點分配(分配在當前進程運行的節(jié)點上);
  • 2.綁定(bind):強制分配到指定節(jié)點上;
  • 3.交叉(interleave):在所有節(jié)點或者指定的節(jié)點上交織分配;
  • 4.優(yōu)先(preferred):在指定節(jié)點上分配,失敗則在其他節(jié)點上分配。

上面文章中最后使用numactl –interleave命令就是指定其為交叉共享模式。

irqbalance:這是作者在上面提到的一個占用CPU的進程,這個進程的作用是在多核心CPU的操作系統(tǒng)中,分配系統(tǒng)中斷信號的。參見:irqbalance.org

概念說完了,下面是上面問題的簡單描述:

我們知道虛擬內存機制是通過一個中斷信號來通過進行內存swap的,所以這個irqbalance進程忙,是一個危險信號,在這里是由于在進行頻繁的內存交換。這種頻繁交換現(xiàn)象稱為swap insanity,在MySQL中經(jīng)常提到,也就是在NUMA框架中,采用不合適的策略,導致核心只能從指定內存塊節(jié)點上分配內存,即使總內存還有富余,也會由于當前節(jié)點內存不足時產生大量的swap操作。

【編輯推薦】

  1. MongoDB之父:MongoDB勝過BigTable
  2. 主流NoSQL數(shù)據(jù)庫全方位評測之MongoDB
  3. 教你如何利用MySQL學習MongoDB
  4. 在Windows環(huán)境下MongoDB搭建和簡單操作
  5. Mongodb源碼分析之Mongos分析
責任編輯:艾婧 來源: NoSQLFan
相關推薦

2023-01-05 11:44:43

性能HTTPS

2023-04-06 07:53:56

Redis連接問題K8s

2017-07-10 07:55:50

虛擬化Windows IO云計算

2021-05-13 08:51:20

GC問題排查

2021-03-29 12:35:04

Kubernetes環(huán)境TCP

2021-11-11 16:14:04

Kubernetes

2021-11-23 21:21:07

線上排查服務

2023-10-11 22:24:00

DubboRedis服務器

2020-11-16 07:19:17

線上函數(shù)性能

2020-08-10 11:00:02

Python優(yōu)化代碼

2021-03-01 06:14:50

環(huán)境高并發(fā)延遲

2022-02-08 17:17:27

內存泄漏排查

2021-10-14 10:53:20

數(shù)據(jù)庫查詢超時

2017-07-07 16:07:41

2014-08-11 09:31:52

2022-01-07 11:48:59

RabbitMQGolang 項目

2024-03-18 09:10:00

死鎖日志binlog

2020-08-12 08:25:43

數(shù)據(jù)庫MySQL技術

2011-09-27 10:35:44

2013-01-17 10:31:13

JavaScriptWeb開發(fā)firebug
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线看片 | 久久久久国产一区二区三区四区 | 国产亚洲精品精品国产亚洲综合 | 成人性生交大片免费看中文带字幕 | 黄片毛片免费看 | 精品美女在线观看视频在线观看 | 精品国产一级片 | 一区二区三区av夏目彩春 | 成人在线视频免费观看 | 国产精品久久久久久久久久久久 | 亚洲国产精品一区在线观看 | 国产高清精品在线 | 国产精品国产馆在线真实露脸 | 51ⅴ精品国产91久久久久久 | 亚洲午夜视频在线观看 | 国产精品久久久久久一区二区三区 | 国产精品一区二区欧美黑人喷潮水 | 99九九视频| 国产精品99 | 九九精品在线 | www.久久99 | 欧美在线视频a | 国产中文一区二区三区 | 成人国产精品色哟哟 | 1区2区3区视频| 99爱在线 | 精品中文字幕在线 | 毛片一级片 | 日韩中文字幕视频在线 | 国产精品视频一区二区三区四区国 | 欧美一区二区三区一在线观看 | 国产成人99久久亚洲综合精品 | 91亚洲精品在线观看 | 成人av资源在线 | av片网| 精品久久免费 | 成年人在线视频 | 婷婷中文字幕 | 精品久久久久久 | 国产成人叼嘿视频在线观看 | 91精品国产一区二区三区香蕉 |