鍍金池/ 問(wèn)答/Python/ 在uwsgi的配置中,reload-on-as與evil-reload-on-a

在uwsgi的配置中,reload-on-as與evil-reload-on-as、limit-as的區(qū)別?

最近使用uwsgi部署項(xiàng)目。為了防止uwsgi進(jìn)程占用內(nèi)存越來(lái)越多,看到uwsgi有如下配置,但不知道它們之間的區(qū)別是什么?希望有高手解答一下。

limit-as

通過(guò)使用POSIX/UNIX的setrlimit()函數(shù)來(lái)限制每個(gè)uWSGI進(jìn)程的虛擬內(nèi)存使用數(shù)。

--limit-as 256

這個(gè)配置會(huì)限制uWSGI的進(jìn)程占用虛擬內(nèi)存不超過(guò)256M。如果虛擬內(nèi)存已經(jīng)達(dá)到256M,并繼續(xù)申請(qǐng)?zhí)摂M內(nèi)存則會(huì)使程序報(bào)內(nèi)存錯(cuò)誤,本次的http請(qǐng)求將返回500錯(cuò)誤。

reload-on-as

當(dāng)一個(gè)工作進(jìn)程的虛擬內(nèi)存占用超過(guò)了限制的大小,那么該進(jìn)程就會(huì)被回收重用(重啟)。

--reload-on-as 128
這個(gè)配置會(huì)重啟所有占用虛擬內(nèi)存超過(guò)128M的工作進(jìn)程。當(dāng)工作進(jìn)程因此重啟時(shí),本次請(qǐng)求的響應(yīng)不會(huì)受影響,返回正常結(jié)果。

reload-on-rss

跟reload-on-as的效果類似,不過(guò)這個(gè)選項(xiàng)控制的是物理內(nèi)存。你可以同時(shí)使用這2個(gè)選項(xiàng):

uwsgi:
  reload-on-as: 128
  reload-on-rss: 96

這個(gè)配置會(huì)導(dǎo)致所有占用128M以上虛擬內(nèi)存或者超過(guò)96M物理內(nèi)存的工作進(jìn)程重啟。

當(dāng)工作進(jìn)程因此重啟時(shí),本次請(qǐng)求的響應(yīng)不會(huì)受影響,返回正常結(jié)果。

evil-reload-on-as

主進(jìn)程會(huì)重啟占用虛擬內(nèi)存超過(guò)<n>M的工作進(jìn)程。

evil-reload-on-rss

主要效果跟evil-reload-on-as一樣,但是這個(gè)選項(xiàng)控制的是非共享物理內(nèi)存。

回答
編輯回答
氕氘氚

根據(jù)你上面對(duì)每個(gè)參數(shù)的解釋:
limit-as 和 reload-on-as 限制是的虛擬內(nèi)存,區(qū)別是--limit-as不會(huì)重啟worker進(jìn)程,reload-on-as會(huì)重啟worker進(jìn)程。
evil-reload-on-rss 限制的是物理內(nèi)存使用量,達(dá)到限制會(huì)重啟worker進(jìn)程

PS:
虛擬內(nèi)存是什么:https://baike.baidu.com/item/...

2018年3月27日 02:11