当我从 apt-get 安装东西时,我不断遇到与 Java 和证书相关的错误,这些错误发生在运行在 OpenVZ 中的 Ubuntu 服务器上。我确信这与 Java 分配内存的方式有关。我知道的失败计数器privvmpages
非常高,所以问题一定是 Java 达到了这个限制。
我读到过,服务器虚拟机会预先分配大量内存来预防性能问题,但客户端虚拟机不会这样做,而且可能更适合我所做的事情。我弄乱了 jvm.cfg 让系统转到客户端虚拟机,但收到错误消息,提示无法找到客户端虚拟机。
我曾尝试用带有 -Xms 和 -Xmx 设置的 Java 调用脚本替换 Java 二进制文件,这解决了我从命令行调用基本操作时的问题,但没有解决执行诸如使用 apt-get 配置证书之类的操作时的问题。
我不知道下一步该怎么做。我需要让它工作,但简单地增加privvmpages
不是一个可用的选项。我已将实际错误粘贴在下面。
Setting up ca-certificates-java (20100412) ...
creating /etc/ssl/certs/java/cacerts...
Could not create the Java virtual machine.
error adding brasil.gov.br/brasil.gov.br.crt
error adding cacert.org/cacert.org.crt
error adding debconf.org/ca.crt
error adding gouv.fr/cert_igca_dsa.crt
error adding gouv.fr/cert_igca_rsa.crt
error adding mozilla/ABAecom_=sub.__Am._Bankers_Assn.=_Root_CA.crt
error adding mozilla/AOL_Time_Warner_Root_Certification_Authority_1.crt
error adding mozilla/AOL_Time_Warner_Root_Certification_Authority_2.crt
error adding mozilla/AddTrust_External_Root.crt
error adding mozilla/AddTrust_Low-Value_Services_Root.crt
error adding mozilla/AddTrust_Public_Services_Root.crt
error adding mozilla/AddTrust_Qualified_Certificates_Root.crt
error adding mozilla/America_Online_Root_Certification_Authority_1.crt
error adding mozilla/America_Online_Root_Certification_Authority_2.crt
error adding mozilla/Baltimore_CyberTrust_Root.crt
error adding mozilla/COMODO_Certification_Authority.crt
error adding mozilla/COMODO_ECC_Certification_Authority.crt
error adding mozilla/Camerfirma_Chambers_of_Commerce_Root.crt
error adding mozilla/Camerfirma_Global_Chambersign_Root.crt
error adding mozilla/Certplus_Class_2_Primary_CA.crt
error adding mozilla/Certum_Root_CA.crt
error adding mozilla/Comodo_AAA_Services_root.crt
error adding mozilla/Comodo_Secure_Services_root.crt
error adding mozilla/Comodo_Trusted_Services_root.crt
error adding mozilla/DST_ACES_CA_X6.crt
error adding mozilla/DST_Root_CA_X3.crt
error adding mozilla/DigiCert_Assured_ID_Root_CA.crt
error adding mozilla/DigiCert_Global_Root_CA.crt
error adding mozilla/DigiCert_High_Assurance_EV_Root_CA.crt
Could not create the Java virtual machine.
error adding mozilla/Digital_Signature_Trust_Co._Global_CA_1.crt
error adding mozilla/Digital_Signature_Trust_Co._Global_CA_2.crt
error adding mozilla/Digital_Signature_Trust_Co._Global_CA_3.crt
error adding mozilla/Digital_Signature_Trust_Co._Global_CA_4.crt
error adding mozilla/Entrust.net_Global_Secure_Personal_CA.crt
error adding mozilla/Entrust.net_Global_Secure_Server_CA.crt
error adding mozilla/Entrust.net_Premium_2048_Secure_Server_CA.crt
error adding mozilla/Entrust.net_Secure_Personal_CA.crt
error adding mozilla/Entrust.net_Secure_Server_CA.crt
error adding mozilla/Entrust_Root_Certification_Authority.crt
error adding mozilla/Equifax_Secure_CA.crt
error adding mozilla/Equifax_Secure_Global_eBusiness_CA.crt
error adding mozilla/Equifax_Secure_eBusiness_CA_1.crt
error adding mozilla/Equifax_Secure_eBusiness_CA_2.crt
error adding mozilla/Firmaprofesional_Root_CA.crt
error adding mozilla/GTE_CyberTrust_Global_Root.crt
error adding mozilla/GTE_CyberTrust_Root_CA.crt
error adding mozilla/GeoTrust_Global_CA.crt
error adding mozilla/GeoTrust_Global_CA_2.crt
error adding mozilla/GeoTrust_Primary_Certification_Authority.crt
error adding mozilla/GeoTrust_Universal_CA.crt
error adding mozilla/GeoTrust_Universal_CA_2.crt
error adding mozilla/GlobalSign_Root_CA.crt
error adding mozilla/GlobalSign_Root_CA_-_R2.crt
error adding mozilla/Go_Daddy_Class_2_CA.crt
error adding mozilla/IPS_CLASE1_root.crt
error adding mozilla/IPS_CLASE3_root.crt
error adding mozilla/IPS_CLASEA1_root.crt
error adding mozilla/IPS_CLASEA3_root.crt
error adding mozilla/IPS_Chained_CAs_root.crt
error adding mozilla/IPS_Servidores_root.crt
error adding mozilla/IPS_Timestamping_root.crt
error adding mozilla/NetLock_Business_=Class_B=_Root.crt
error adding mozilla/NetLock_Express_=Class_C=_Root.crt
error adding mozilla/NetLock_Notary_=Class_A=_Root.crt
error adding mozilla/NetLock_Qualified_=Class_QA=_Root.crt
error adding mozilla/Network_Solutions_Certificate_Authority.crt
error adding mozilla/QuoVadis_Root_CA.crt
error adding mozilla/QuoVadis_Root_CA_2.crt
error adding mozilla/QuoVadis_Root_CA_3.crt
error adding mozilla/RSA_Root_Certificate_1.crt
error adding mozilla/RSA_Security_1024_v3.crt
error adding mozilla/RSA_Security_2048_v3.crt
error adding mozilla/SecureTrust_CA.crt
error adding mozilla/Secure_Global_CA.crt
error adding mozilla/Security_Communication_Root_CA.crt
error adding mozilla/Sonera_Class_1_Root_CA.crt
error adding mozilla/Sonera_Class_2_Root_CA.crt
error adding mozilla/Staat_der_Nederlanden_Root_CA.crt
error adding mozilla/Starfield_Class_2_CA.crt
error adding mozilla/StartCom_Certification_Authority.crt
error adding mozilla/StartCom_Ltd..crt
error adding mozilla/SwissSign_Gold_CA_-_G2.crt
error adding mozilla/SwissSign_Platinum_CA_-_G2.crt
error adding mozilla/SwissSign_Silver_CA_-_G2.crt
error adding mozilla/Swisscom_Root_CA_1.crt
error adding mozilla/TC_TrustCenter__Germany__Class_2_CA.crt
error adding mozilla/TC_TrustCenter__Germany__Class_3_CA.crt
error adding mozilla/TDC_Internet_Root_CA.crt
error adding mozilla/TDC_OCES_Root_CA.crt
error adding mozilla/TURKTRUST_Certificate_Services_Provider_Root_1.crt
error adding mozilla/TURKTRUST_Certificate_Services_Provider_Root_2.crt
error adding mozilla/Taiwan_GRCA.crt
error adding mozilla/Thawte_Personal_Basic_CA.crt
error adding mozilla/Thawte_Personal_Freemail_CA.crt
error adding mozilla/Thawte_Personal_Premium_CA.crt
error adding mozilla/Thawte_Premium_Server_CA.crt
error adding mozilla/Thawte_Server_CA.crt
error adding mozilla/Thawte_Time_Stamping_CA.crt
error adding mozilla/UTN-USER_First-Network_Applications.crt
error adding mozilla/UTN_DATACorp_SGC_Root_CA.crt
error adding mozilla/UTN_USERFirst_Email_Root_CA.crt
error adding mozilla/UTN_USERFirst_Hardware_Root_CA.crt
error adding mozilla/ValiCert_Class_1_VA.crt
error adding mozilla/ValiCert_Class_2_VA.crt
error adding mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.crt
error adding mozilla/Verisign_Class_1_Public_Primary_Certification_Authority.crt
error adding mozilla/Verisign_Class_1_Public_Primary_Certification_Authority_-_G2.crt
error adding mozilla/Verisign_Class_1_Public_Primary_Certification_Authority_-_G3.crt
error adding mozilla/Verisign_Class_2_Public_Primary_Certification_Authority.crt
error adding mozilla/Verisign_Class_2_Public_Primary_Certification_Authority_-_G2.crt
error adding mozilla/Verisign_Class_2_Public_Primary_Certification_Authority_-_G3.crt
error adding mozilla/Verisign_Class_3_Public_Primary_Certification_Authority.crt
error adding mozilla/Verisign_Class_3_Public_Primary_Certification_Authority_-_G2.crt
error adding mozilla/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.crt
error adding mozilla/Verisign_Class_4_Public_Primary_Certification_Authority_-_G2.crt
error adding mozilla/Verisign_Class_4_Public_Primary_Certification_Authority_-_G3.crt
error adding mozilla/Verisign_RSA_Secure_Server_CA.crt
error adding mozilla/Verisign_Time_Stamping_Authority_CA.crt
error adding mozilla/Visa_International_Global_Root_2.crt
error adding mozilla/Visa_eCommerce_Root.crt
error adding mozilla/WellsSecure_Public_Root_Certificate_Authority.crt
error adding mozilla/Wells_Fargo_Root_CA.crt
error adding mozilla/XRamp_Global_CA_Root.crt
error adding mozilla/beTRUSTed_Root_CA-Baltimore_Implementation.crt
error adding mozilla/beTRUSTed_Root_CA.crt
error adding mozilla/beTRUSTed_Root_CA_-_Entrust_Implementation.crt
error adding mozilla/beTRUSTed_Root_CA_-_RSA_Implementation.crt
error adding mozilla/thawte_Primary_Root_CA.crt
error adding signet.pl/signet_ca1_pem.crt
error adding signet.pl/signet_ca2_pem.crt
error adding signet.pl/signet_ca3_pem.crt
error adding signet.pl/signet_ocspklasa2_pem.crt
error adding signet.pl/signet_ocspklasa3_pem.crt
error adding signet.pl/signet_pca2_pem.crt
error adding signet.pl/signet_pca3_pem.crt
error adding signet.pl/signet_rootca_pem.crt
error adding signet.pl/signet_tsa1_pem.crt
error adding spi-inc.org/spi-ca-2003.crt
error adding spi-inc.org/spi-cacert-2008.crt
error adding telesec.de/deutsche-telekom-root-ca-2.crt
failed (VM used: java-6-openjdk).
dpkg: error processing ca-certificates-java (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
ca-certificates-java
E: Sub-process /usr/bin/dpkg returned an error code (1)
/proc/user_beancounters:/proc/user_beancounters:
Version: 2.5
uid resource held maxheld barrier limit failcnt
12803: kmemsize 4612796 5723362 2147483646 2147483646 0
lockedpages 0 0 999999 999999 0
privvmpages 76205 83773 262144 262144 0
shmpages 640 690 131072 131072 0
dummy 0 0 0 0 0
numproc 36 43 999999 999999 0
physpages 22308 23091 0 2147483647 0
vmguarpages 0 0 131072 2147483647 0
oomguarpages 22308 23091 131072 2147483647 0
numtcpsock 15 31 7999992 7999992 0
numflock 5 8 999999 999999 0
numpty 1 1 500000 500000 0
numsiginfo 0 6 999999 999999 0
tcpsndbuf 262560 7030184 214748160 396774400 0
tcprcvbuf 245760 507904 214748160 396774400 0
othersockbuf 20952 95288 214748160 396774400 0
dgramrcvbuf 0 12848 214748160 396774400 0
numothersock 16 23 7999992 7999992 0
dcachesize 0 0 2147483646 2147483646 0
numfile 1233 1956 23999976 23999976 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
numiptent 24 24 999999 999999 0
更新
鉴于最近的活动,我又试了一次。我不记得最初导致此错误时我在做什么,但我确实注意到我在 Ubuntu 上落后了几个版本。我对其进行了更新,现在似乎已成功ca-certificates-java
安装。我不确定是否发生了更微妙的事情,但我确实证实了 Alex 所说的,这ca-certificates-java
似乎openjdk-6-jre
相互依赖。奇怪的是,操作系统升级似乎自行解决了该问题。我正在从主机上的原始安装进行更新:也许他们正在用一些在这方面损坏的安装刷新我的虚拟机或类似的东西。
这个问题现在看起来至少更正常了。尝试编译(或从其他地方编译运行)即使是一个简单的 hello world 程序也会失败,并显示以下消息:
user@domain:~# java HelloWorldApp
Picked up _JAVA_OPTIONS: -Xms128m -Xmx512m
Error occurred during initialization of VM
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:614)
at java.lang.ref.Reference.<clinit>(Reference.java:162)
无论是否_JAVA_OPTIONS
设置了环境变量,都会发生这种情况。
答案1
史蒂芬,
在运行 apt-get 例程之前,通过在命令行运行以下命令设置 _JAVA_OPTIONS:
export _JAVA_OPTIONS="-Xms128m -Xmx512m"
您必须包含下划线,并将 -Xmx 设置为可用 RAM 的约 80%,并将 -Xms 设置为低于 -Xmx 的值。
如果仍然遇到问题,尤其是挂起,请确保您的环境至少可以使用两个 CPU 核心;java 在单个 CPU 核心上无法很好地运行。从容器内部,您可以运行以下命令:
cat /proc/cpuinfo
答案2
我曾经能够让 Java 过度配置内存的一种方法是添加以下内容/etc/security/limits.conf
(非 Debian 发行版可能有所不同)并尝试在新的登录 shell 中再次测试:
* soft memlock unlimited
* hard memlock unlimited
但是,这个设置不太可能真正帮助你。你可能需要获得privvmpages
资源更高的主机。
答案3
好吧,failcnt
您的列/proc/user_beancounters
仅包含零,所以我认为问题与内存分配无关。我认为您应该尝试使用在本地下载软件包wget
并使用调试安装过程dpkg --debug=3773
。我尝试在我的系统上安装ca-certificates-java
,但发现ca-certificates-java
和openjdk-6-jre
彼此之间无法安装。如果您的系统上已经安装了 Java 计算机,我猜它应该不是 OpenJDK 实现。那么您是如何安装 JVM 的?也许另一个 JVM 是问题的根源。
答案4
我使用在 openvz 中运行的 Ubuntu 10.04.1 LTS。已经在 1 核 256 mb 上运行了一段时间,但一直无法让 java 在该配置下工作。从来没有关注过它,直到我需要在其上运行 java 应用程序并决定研究它。无法安装 ca-certificates-java。它会在使用 open-jdk、default-jdk 或单独运行它时失败。专注于 jvm 启动 RAM 分配过程,并将 RAM 逐步增加到 1gb,突然 apt-get install ca-certificates-java 和各种其他安装(包括 openjdk-6)都可以工作了。成功运行更新和安装后,我尝试将 RAM 重置为较小的值,发现无论 -Xmx 标志设置为何值,jvm 都接受 768 mb RAM 作为最低值。仍然比 1gb 好。我也尝试增加核心数量,但与上面有人说的相反,这没有什么区别。