我的Jenkins作業內存不足,在構建日誌中給出java.lang.OutOfMemoryError
消息。但是我使用Ubuntu Package Manager,或apt-get
來安裝Jenkins,我不知道在哪裏尋找來改變分配給Jenkins的堆空間量。當它在Ubuntu上作爲守護進程運行時,我如何給Jenkins提供更多堆空間?
回答
有兩種可能遇到的OutOfMemoryError
消息而詹金斯作業運行:
java.lang.OutOfMemoryError: Heap space
- 這意味着你 需要增加分配給詹金斯的堆空間量時 守護程序啓動。java.lang.OutOfMemoryError: PermGen space
- 這意味着您需要增加分配給存儲Java對象元數據的生成空間量 。-Xmx
參數的值將增加 對此錯誤沒有影響。
在Ubuntu 12.04 LTS,取消對/etc/default/jenkins
十號線的JAVA_ARGS
設置:
- 要添加更多的Java堆空間,增加
-Xmx
Java參數的值。這設置了內存分配池(垃圾收集堆)的最大大小。 - 要添加更多的PermGen空間,添加參數
XX:MaxPermSize=512m
(用別的東西代替512
如果你想要更多。持久代堆保存有關用戶類的元數據信息。
例如,這種提取物是從默認/etc/default/jenkins
後全新安裝詹金斯:
# arguments to pass to java
#JAVA_ARGS="-Xmx256m"
這是,如果你設置的堆空間爲1 GB它會怎樣看:
# arguments to pass to java
JAVA_ARGS="-Xmx1048m"
請注意不要將堆大小設置得太大,因爲無論您分配的是多少,都會減少可用於操作系統和其他程序的內存量,這可能導致過度分頁(內存在交換盤和RAM之間來回交換,這會減慢你的系統)。
如果您還設置MaxPermSpace
,你需要添加參數之間有一個空格):
# arguments to pass to java
JAVA_ARGS="-Xmx1048m -XX:MaxPermSize=512m"
進行更改後,從詹金斯Web界面平滑重啓詹金斯,或者在命令強制立即重啓與sudo /etc/init.d/jenkins restart
。
我發現以下網站對理解Java最大和永久生成堆大小有用:http://www.freshblurbs.com/blog/2005/05/19/explaining-java-lang-outofmemoryerror-permgen-space.html。
對於CentOS,Jenkins.xml默認位於的目錄是/ etc/sysconfig/for jenkins-1.579-1。1
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="
乾杯,我幾乎要瘋了試圖找到這個 – bmaher
在我的** openSUSE Leap ** 42.1(x86_64)版本2.70的Jenkins配置位於'/ etc/sysconfig/jenkins' – user1053510
也適用於RedHat RHEL 7.4,jenkins 2.98 –
如果使用的是Ubuntu的服務器,首先安裝Monitoring插件看到詹金斯使用多少內存。例如,這是我在安裝後看到:
然後,用命令free -m
,我想通了,什麼是服務器的內存大小。在我的情況下,16Gb。隨着這些信息,我打開/etc/default/jenkins
和改變:
JAVA_ARGS="-Djava.awt.headless=true"
到
JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"
其中8384爲8GB。然後我重新啓動詹金斯與命令sudo service jenkins restart
然後,觸發這是越來越內存問題的工作後,事情看起來好多了,工作可以完成這一點,後續運行:
- 1. 如何在ubuntu中將celeryd作爲守護進程運行?
- 2. 在Ubuntu上運行Sidekiq作爲守護進程
- 3. 在Linux上運行jar文件作爲守護進程Ubuntu
- 4. 在啓動時運行python腳本作爲守護進程(Ubuntu)
- 5. 如何在Windows上運行Apache Ignite作爲守護進程
- 6. 如何在Ubuntu上安裝python apscheduler作爲守護進程?
- 7. 運行web.py作爲守護進程
- 8. 運行celeryd_multi作爲守護進程
- 9. 將SBT作爲守護進程運行
- 10. Ubuntu:將Memcached作爲守護進程運行
- 11. 如何將我的服務器作爲守護進程運行?
- 12. Docker - 如何將mongodb進程作爲守護進程運行
- 13. 如何在Ubuntu中作爲守護進程啓動Go程序?
- 14. 將提升線程作爲守護進程運行
- 15. 如何在後臺運行play framework 2.5(作爲守護進程)?
- 16. 如何在Docker中將HHVM作爲守護進程運行?
- 17. 定時器()作爲守護進程與非守護進程
- 18. 在raspban上運行一個php腳本作爲守護進程
- 19. 在Ubuntu上使用jar作爲守護進程使用100%cpu
- 20. 當從守護進程運行時Telnet無法正常運行
- 21. 將Python作爲守護進程運行時更改進程名稱
- 22. Celeryd運行多個守護進程
- 23. 如何運行docker守護進程?
- 24. 如何爲每個Vhost運行多個Celery守護進程
- 25. 我可以運行GCC作爲守護進程(或將它用作庫)嗎?
- 26. 如何爲守護進程或服務提供加密密鑰?
- 27. 如何將sbt作爲守護進程運行?
- 28. 如何使uwsgi --emperor作爲守護進程運行
- 29. 如何將grunt作爲守護進程運行?
- 30. 如何將airflow調度器作爲守護進程運行?
我想你忘記了秒破折號,所以它應該是:JAVA_ARGS =「 - Xmx1048m -XX:MaxPermSize = 512m」 –
謝謝你!我添加了缺少的短跑。 –
np,謝謝你的回答。 –