亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

記一次MongoDB性能問題(從MySQL遷移到MongoDB)

2020-03-14 13:00:28
字體:
來源:轉載
供稿:網友

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

WARNING: You are running on a NUMA machine. We suggest launching mongod like this to avoid performance problems: numactl –interleave=all mongod [other options]

當時我并不太清楚NUMA是什么東西,所以沒有處理,只是把問題反饋給了運維人員,后來知道運維人員也沒有理會這茬兒,所以問題的序幕就這樣拉開了。

遷移工作需要導入舊數據。MongoDB本身有一個mongoimport工具可供使用,不過它只接受json、csv等格式的源文件,不適合我的需求,所以我沒用,而是用PHP寫了一個腳本,平穩運行了一段時間后,我發現數據導入的速度下降了,同時PHP拋出異常:

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

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

<?phpMongoCursor::$timeout = -1;?>

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

max number of retries exhausted, couldn't send query, couldn't send query: Broken pipe

接著使用strace跟蹤了一下PHP腳本,發現進程卡在了recvfrom操作上:

shell> strace -f -r -p <PID>recvfrom(<FD>,

通過如下命令查詢recvfrom操作的含義:

shell> apropos recvfromreceive a message from a socket

或者按照下面的方式確認一下:

shell> lsof -p <PID>shell> ls -l /proc/<PID>/fd/<FD>

此時如果查詢MongoDB的當前操作,會發現幾乎每個操作會消耗大量的時間:

mongo> db.currentOp()

與此同時,運行mongostat的話,結果會顯示很高的locked值。

我在網絡上找到一篇:MongoDB Pre-Splitting for Faster Data Loading and Importing,看上去和我的問題很類似,不過他的問題實質是由于自動分片導致數據遷移所致,解決方法是使用手動分片,而我并沒有使用自動分片,自然不是這個原因。

詢問了幾個朋友,有人反映曾遇到過類似的問題,在他的場景里,問題的主要原因是系統IO操作繁忙時,數據文件預分配堵塞了其它操作,從而導致雪崩效應。

為了驗證這種可能,我搜索了一下MongoDB日志:

shell> grep FileAllocator /path/to/log[FileAllocator] allocating new datafile ... filling with zeroes...[FileAllocator] done allocating datafile ... took ... secs

我使用的文件系統是ext4(xfs也不錯 ),創建數據文件非常快,所以不是這個原因,但如果有人使用ext3,可能會遇到這類問題,所以還是大概介紹一下如何解決:

MongoDB按需自動生成數據文件:先是<DB>.0,大小是64M,然后是<DB>.1,大小翻番到128M,到了<DB>.5,大小翻番到2G,其后的數據文件就保持在2G大小。為了避免可能出現的問題,可以采用事先手動創建數據文件的策略:

#!/bin/shDB_NAME=$1cd /path/to/$DB_NAMEfor INDEX_NUMBER in {5..50}; do  FILE_NAME=$DB_NAME.$INDEX_NUMBER  if [ ! -e $FILE_NAME ]; then    head -c 2146435072 /dev/zero > $FILE_NAME  fidone

注:數值2146435072并不是標準的2G,這是INT整數范圍決定的。

最后一個求助方式就是官方論壇了,那里的國際友人建議我檢查一下是不是索引不佳所致,死馬當活馬醫,我激活了Profiler記錄慢操作:

mongo> use <DB>mongo> db.setProfilingLevel(1);

不過結果顯示基本都是insert操作(因為我是導入數據為主),本身就不需要索引:

mongo> use <DB>mongo> db.system.profile.find().sort({$natural:-1})

問題始終沒有得到解決,求人不如求己,我又重復了幾次遷移舊數據的過程,結果自然還是老樣子,但我發現每當出問題的時候,總有一個名叫irqbalance的進程CPU占用率居高不下,搜索了一下,發現很多介紹irqbalance的文章中都提及了NUMA,讓我一下子想起之前在日志中看到的警告信息,我勒個去,竟然繞了這么大一個圈圈!安下心來仔細翻閱文檔,發現官方其實已經有了相關介紹,按如下設置搞定:

shell> echo 0 > /proc/sys/vm/zone_reclaim_modeshell> numactl --interleave=all mongod [options]

關于zone_reclaim_mode內核參數的說明,可以參考官方文檔。

注:從MongoDB1.9.2開始:MongoDB會在啟動時自動設置zone_reclaim_mode。

至于NUMA的含義,簡單點說,在有多個物理CPU的架構下,NUMA把內存分為本地和遠程,每個物理CPU都有屬于自己的本地內存,訪問本地內存速度快于訪問遠程內存,缺省情況下,每個物理CPU只能訪問屬于自己的本地內存。對于MongoDB這種需要大內存的服務來說就可能造成內存不足,NUMA的詳細介紹,可以參考老外的文章。

理論上,MySQL、Redis、Memcached等等都可能會受到NUMA的影響,需要留意。

 

注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
性色av一区二区三区| 欧美大片大片在线播放| 日韩成人激情影院| 国产视频观看一区| 国产精品色悠悠| xvideos成人免费中文版| 欧美日韩国产成人在线| 色www亚洲国产张柏芝| 亚洲电影在线观看| 国产精品视频区1| 欧美黑人xxxⅹ高潮交| 久久影院资源站| 亚洲性av网站| 亚洲欧美综合v| 日韩最新中文字幕电影免费看| xvideos国产精品| 亚洲美女免费精品视频在线观看| 精品成人国产在线观看男人呻吟| 久久久亚洲影院| 久久手机精品视频| 国产精品一二区| 亚洲天堂av电影| 亚洲人午夜精品免费| 性欧美激情精品| 欧美噜噜久久久xxx| 成人免费高清完整版在线观看| 久久亚洲精品成人| 国色天香2019中文字幕在线观看| 日韩av免费在线看| 国产999在线观看| 午夜免费久久久久| 91视频国产高清| 久久久久久中文| 中文字幕精品影院| 欧美黑人一区二区三区| 成人福利网站在线观看| 91老司机精品视频| 久久成人综合视频| 欧美高清视频在线观看| 国产精品一二区| 成人欧美一区二区三区在线湿哒哒| 国产精品久久久久久久app| 国产精品欧美一区二区| 欧美另类老肥妇| 欧美福利视频在线| 国产欧美va欧美va香蕉在线| 日韩精品免费在线| 亚洲精品v天堂中文字幕| 国产91在线播放九色快色| 国产精品自产拍在线观看中文| 国产精品美女久久| 欧洲精品久久久| 中文字幕在线日韩| 欧美激情在线有限公司| 色播久久人人爽人人爽人人片视av| 久久久这里只有精品视频| 日韩av一区在线| 欧美裸身视频免费观看| 黑丝美女久久久| 久久久久久久999| 午夜精品一区二区三区在线| 欧美电影《睫毛膏》| 久久在线观看视频| 日韩av一卡二卡| 精品日韩美女的视频高清| 97视频网站入口| 欧美综合在线第二页| 久久久免费av| 亚洲无限乱码一二三四麻| 日韩动漫免费观看电视剧高清| 狠狠色狠狠色综合日日五| 成人女保姆的销魂服务| 亚洲a∨日韩av高清在线观看| 久久久久久久香蕉网| 欧美日韩一区二区在线播放| 日韩在线国产精品| 欧美激情视频在线| 日韩成人在线电影网| 成人福利网站在线观看11| 亚洲精品自在久久| 久久久女人电视剧免费播放下载| 欧美激情综合色综合啪啪五月| 欧美大片免费观看在线观看网站推荐| 九九久久久久久久久激情| 国产日产久久高清欧美一区| 欧美韩国理论所午夜片917电影| 欧美成人精品影院| 日韩欧美精品免费在线| 色小说视频一区| 亚洲精美色品网站| 日韩欧美国产高清91| 久久精品国产免费观看| 国产欧美一区二区三区久久人妖| 国产精品美女av| 日本一本a高清免费不卡| 色噜噜狠狠色综合网图区| 尤物九九久久国产精品的特点| 亚洲精品国产拍免费91在线| 日韩动漫免费观看电视剧高清| 日韩av在线播放资源| 亚洲最大的免费| 国产一区二区三区直播精品电影| 欧美成人第一页| 精品成人国产在线观看男人呻吟| 国产区精品在线观看| 日韩有码在线观看| 成人性生交大片免费看视频直播| 国产成人精品a视频一区www| 国产成人精品电影久久久| 亚洲精品影视在线观看| 久久久久久久国产精品视频| www.日韩系列| 中文字幕亚洲无线码在线一区| 国产成人精品综合| 日韩精品中文字幕有码专区| 国产精品女人网站| 色综合久久久久久中文网| 亚洲精品久久久久久久久久久| 亚洲色在线视频| 日韩av免费在线| 亚洲新声在线观看| 日韩欧美视频一区二区三区| 91精品国产777在线观看| 欧美激情国产高清| 亚洲韩国欧洲国产日产av| 亚洲黄色免费三级| 北条麻妃在线一区二区| 亚洲成色777777女色窝| 久久久精品亚洲| 亚洲xxxxx电影| 亚洲综合精品一区二区| 日本精品视频网站| 亚洲欧美激情在线视频| 亚洲精品小视频在线观看| 97视频在线观看成人| 欧美另类在线观看| 777午夜精品福利在线观看| 九九热99久久久国产盗摄| 中国china体内裑精亚洲片| 亚洲色图第一页| 2021久久精品国产99国产精品| 综合国产在线观看| 亚洲欧美日韩综合| 中文字幕一区二区精品| 91国自产精品中文字幕亚洲| 97视频在线免费观看| 91禁国产网站| 97在线精品视频| 人妖精品videosex性欧美| 久久99青青精品免费观看| 久久久中文字幕| 日韩在线视频观看正片免费网站| 国产伦精品一区二区三区精品视频| 亚洲精品国产福利| 欧美在线不卡区| 亚洲黄在线观看| 一区国产精品视频| 在线看片第一页欧美| 久久久噜噜噜久久中文字免| 狠狠躁夜夜躁久久躁别揉| 国产亚洲欧洲高清一区| 亚洲成av人片在线观看香蕉| 亚洲欧美制服中文字幕| 成人激情免费在线|