成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Gunicron + gevent Mongodb數(shù)據(jù)庫(kù)連接一直增加不釋放

Yujiaao / 1148人閱讀

摘要:解決過(guò)程關(guān)于什么是是一個(gè)上被廣泛使用的高性能的。和大多數(shù)的框架兼容,并具有實(shí)現(xiàn)簡(jiǎn)單,輕量級(jí),高性能等特點(diǎn)。為了解決這個(gè)問(wèn)題,在實(shí)例化對(duì)象的時(shí)候要加上參數(shù)。參考用來(lái),能否長(zhǎng)連接連接從未發(fā)布和在上使用

問(wèn)題描述

使用Flask開(kāi)發(fā)的Web服務(wù),部署在服務(wù)器上使用的是gunicorn manage:app -k gevent -w 4

某日告警,說(shuō)瀏覽器崩了,當(dāng)時(shí)急急忙忙的重啟,搞好了,因?yàn)樗械姆?wù)都正常運(yùn)行,后面查看日志,也沒(méi)有發(fā)現(xiàn)什么特別的地方,最終感覺(jué)因該是MongoDB連接數(shù)滿(mǎn)了,本地測(cè)試發(fā)現(xiàn)確實(shí)是連接數(shù)一直增加,不會(huì)釋放。


解決過(guò)程 關(guān)于Gunicron

什么是Gunicron:是一個(gè)unix上被廣泛使用的高性能的Python WSGI UNIX HTTP Server。和大多數(shù)的web框架兼容,并具有實(shí)現(xiàn)簡(jiǎn)單,輕量級(jí),高性能等特點(diǎn)。

深入理解uwsgi和gunicorn網(wǎng)絡(luò)模型

為什么要使用Gunicron:用于接受http請(qǐng)求并轉(zhuǎn)換為WSGI協(xié)議,以供實(shí)現(xiàn)了WSGI協(xié)議的flask使用,并且gunicorn得益于gevent等技術(shù),大幅度提高了性能,在生產(chǎn)環(huán)境以替代框架自帶的WSGI server。

生產(chǎn)環(huán)境

配置

gevent==1.3.6
greenlet==0.4.14
gunicorn==19.9.0
pymongo==3.7.0

mongodb連接代碼

    def __init__(self):
        config_name = os.getenv("FLASK_CONFIG") or "default"
        base_config = config[config_name]  # object
        self.client = MongoClient(host=base_config.MONGO_HOST, port=base_config.MONGO_PORT)
        db_name = base_config.MONGO_NAME
        self.db = self.client[db_name]
修改方案

參考pymongo: MongoClient opened before fork錯(cuò)誤排解

fork是啟動(dòng)新進(jìn)程的方法,由于MongoClient不是進(jìn)程安全的,所以不可以將該實(shí)例從父進(jìn)程中復(fù)制到子進(jìn)程當(dāng)中。在這個(gè)flask應(yīng)用中,flask使用gunicorn作為網(wǎng)關(guān)接口,在啟動(dòng)的時(shí)候會(huì)啟動(dòng)一個(gè)主進(jìn)程和多個(gè)子進(jìn)程,也就是master/workers,這個(gè)時(shí)候就出現(xiàn)了MongoClient實(shí)例在進(jìn)程之間的傳遞。

為了解決這個(gè)問(wèn)題,在實(shí)例化MongoClient對(duì)象的時(shí)候要加上connect=False參數(shù)。

    def __init__(self):
        config_name = os.getenv("FLASK_CONFIG") or "default"
        base_config = config[config_name]  # object
        self.client = MongoClient(host=base_config.MONGO_HOST, port=base_config.MONGO_PORT, maxIdleTimeMS=300000, connect=False)
        db_name = base_config.MONGO_NAME
        self.db = self.client[db_name]
參考

用gevent來(lái)host wsgi server,mysql能否長(zhǎng)連接

python – Mongo連接從未發(fā)布 – Django和Mongoengine在gevent上使用gunicorn

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43954.html

相關(guān)文章

  • Gunicron + gevent Mongodb數(shù)據(jù)庫(kù)連接一直增加釋放

    摘要:解決過(guò)程關(guān)于什么是是一個(gè)上被廣泛使用的高性能的。和大多數(shù)的框架兼容,并具有實(shí)現(xiàn)簡(jiǎn)單,輕量級(jí),高性能等特點(diǎn)。為了解決這個(gè)問(wèn)題,在實(shí)例化對(duì)象的時(shí)候要加上參數(shù)。參考用來(lái),能否長(zhǎng)連接連接從未發(fā)布和在上使用 問(wèn)題描述 使用Flask開(kāi)發(fā)的Web服務(wù),部署在服務(wù)器上使用的是gunicorn manage:app -k gevent -w 4 某日告警,說(shuō)瀏覽器崩了,當(dāng)時(shí)急急忙忙的重啟,...

    Taste 評(píng)論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

    摘要:總結(jié)本次鏡像化大概花了一周的時(shí)間,包括測(cè)試和解決一些坑,很多知識(shí)點(diǎn)包括原來(lái)的項(xiàng)目都不是太熟悉,所以記錄一下,可能回頭會(huì)發(fā)現(xiàn)這些很,但是相信對(duì)一些人還是有用的。 背景 手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼d...

    susheng 評(píng)論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

    摘要:總結(jié)本次鏡像化大概花了一周的時(shí)間,包括測(cè)試和解決一些坑,很多知識(shí)點(diǎn)包括原來(lái)的項(xiàng)目都不是太熟悉,所以記錄一下,可能回頭會(huì)發(fā)現(xiàn)這些很,但是相信對(duì)一些人還是有用的。 背景 手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼d...

    mo0n1andin 評(píng)論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

    摘要:總結(jié)本次鏡像化大概花了一周的時(shí)間,包括測(cè)試和解決一些坑,很多知識(shí)點(diǎn)包括原來(lái)的項(xiàng)目都不是太熟悉,所以記錄一下,可能回頭會(huì)發(fā)現(xiàn)這些很,但是相信對(duì)一些人還是有用的。 背景 手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼d...

    Jioby 評(píng)論0 收藏0
  • mongo連接分析

    摘要:本文旨在梳理這些問(wèn)題,進(jìn)行一個(gè)全面的分析。等到進(jìn)行數(shù)據(jù)庫(kù)操作的時(shí)候,再去中獲取一個(gè)連接,進(jìn)行操作總結(jié)通過(guò)以上分析,對(duì)于以下的數(shù)據(jù)庫(kù)連接池與關(guān)系型數(shù)據(jù)庫(kù)連接池并無(wú)區(qū)別。 摘要 在前面的文章中有分析過(guò)關(guān)系型數(shù)據(jù)庫(kù)的連接,以及連接池的原理。在mongo數(shù)據(jù)庫(kù)同樣存在,經(jīng)??吹接芯W(wǎng)友在問(wèn)mongo 連接了數(shù)據(jù)庫(kù)要不要關(guān),怎么關(guān)。內(nèi)置的數(shù)據(jù)庫(kù)連接池是單線程還是多線程,mongo服務(wù)器為什么會(huì)殺游...

    yuanxin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<