我正在尝试在低内存系统 (150-256Mb) 上运行 tomcat。即使我使用 -Xmx64m(无论如何这应该是默认值)启动 JVM,该进程也会立即占用 200Mb+。
我想知道为什么 JVM 本身需要这么多内存,或者是否有办法调整它?其他 JVM 是否比 sun 低内存消耗更好 - 它们是否与 tomcat 一起使用?
在运行 Java 1.6.0 update 16 的 64 位 RHEL5 上,root 可以成功运行 Java 程序,但用户不能,因为libjli.so应该找不到。关闭SELinux,程序运行前环境不变。我试过放入libjli.so,LD_LIBRARY_PATH但没有任何区别。
我该如何解决这个错误?
我的团队在尝试进行由 OutOfMemoryErrors 触发的良好堆转储时遇到了困难。出于特定原因,我们目前正在使用从 bash 脚本调用的 jmap 进行转储,而不是使用 HeapDumpOnOutOfMemoryError 标志。我们使用的是 64 位 1.6 JVM,堆大小约为 3 GB。我们的堆转储失败 90% 的时间(猜测)。
有什么我们可以做的事情来提高我们获得干净的堆转储的几率,我们可以用它来解决内存问题吗?我已经读到 jmap 在 Java 1.4 中存在重大问题,但现在应该主要解决这些问题。
我在 Windows 服务器上安装了 Tomcat,但无法启动。我启动服务并看到进度条,但它失败了。
我安装了 Java 运行时环境版本 6 并创建了 JRE_HOME 环境变量。(C:\Program Files\Java\jre6)
以下是 jakarta_serviceYYYMMDD.log 条目:
[2010-04-08 14:22:42] [info] Commons Daemon procrun (1.0.2.0) started
[2010-04-08 14:22:42] [info] Running Service...
[2010-04-08 14:22:42] [info] Starting service...
[2010-04-08 14:22:42] [info] Error occurred during initialization of VM
[2010-04-08 14:22:42] [info] java/lang/NoClassDefFoundError
[2010-04-08 14:22:42] [info] : java/lang/Object
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我在本地计算机上的 ubuntu 10.4(带有 vmware fusion)上成功测试了 jenkins-ci。现在我想在我位于 hosteurope 的虚拟服务器上安装和使用它。基本安装没问题,但现在我的构建项目有问题。
从存储库中提取 mercurial 更新后,ant 被调用并在我的构建项目中引发以下错误:
“构建文件:/var/lib/jenkins/workspace/concrete5-seed-clean/build.xml [property] java.io.IOException:无法运行程序“/usr/bin/env”:java.io.IOException:error= 12、无法分配内存”
hosteurope ( http://faq.hosteurope.de/index.php?cpid=13918 ) 的虚拟服务器上的堆大小存在一个已知问题,因此我尝试手动设置堆大小:
# for ant
export ANT_OPTS="-Xms512m -Xmx512m"
# jenkins
# edited /etc/default/jenkins, added line
JAVA_ARGS="-Xms512m -Xmx512m"
# restarted jenkins via /etc/init.d/jenkins restart
Run Code Online (Sandbox Code Playgroud)
为ant设置了这个之后,命令“ant -diagnostics”运行了,没有报错,但是我尝试构建项目的时候还是出现了这个错误。
服务器详细信息:- http://www.hosteurope.de/produkt/Virtual-Server-Linux-L
我的问题: - 1GB 足够 Jenkins 还是我必须升级服务器?- 这个错误是由 ant 还是 jenkins 引起的?
更新:我使用 ant 选项 -Xmx128m -Xms128m 运行它,但有时错误再次发生。(这让我很害怕,因为我现在无法重现它:/)
非常感谢帮助!
干杯,马蒂亚斯
我需要java,但我不希望任何浏览器能够访问它。
是否可以删除整个小程序/浏览器插件代码?
我在数据中心的同一个机架中运行两台Dell R410服务器(在负载平衡器后面)。两者都具有相同的硬件配置,运行 Ubuntu 10.4,安装了相同的软件包并运行相同的 Java Web 服务器(没有其他负载),我发现两者之间存在显着的性能差异。
性能差异在两台服务器的平均响应时间上最为明显(在 Java 应用程序本身中测量,没有网络延迟):其中一台比另一台快 20-30%,非常一致。
我曾经dstat想过,是否有更多的上下文切换、IO、交换或任何东西,但我看不出有什么不同。在相同的工作负载下(无交换,几乎无 IO),一台服务器上的 CPU 使用率和负载更高。
因此,差异似乎主要受 CPU 限制,但是虽然使用简单的 CPU 基准测试sysbench(关闭所有其他负载)确实产生了差异,但只有 6%。所以也许不仅仅是CPU,还有内存性能。
到目前为止,我已经检查过:
dmidecode,没有显示任何差异)/proc/cpuinfo,没啥区别。cpufreq-info,没有区别。另外,几个月前我完全更换了 RAM,没有任何影响。
我搞不清楚了。我能做些什么来弄清楚,发生了什么?
更新:耶!两台服务器现在的性能相同。这是 jim_m_somewhere 在评论中命名的“power CRAP”设置。“电源管理”的 BIOS 选项在快速服务器上位于“最大性能”上,在另一台上位于“主动电源控制器”(戴尔的默认设置)上。显然我忘记了,我在两年前进行了该设置,而且我并没有在所有服务器上都这样做。感谢大家提供非常有帮助的意见!
我公司正在考虑购买的应用程序需要 Java 6。我担心这已经过时了,因此我建议不要使用该应用程序。但似乎 Oracle 仍然发布 v6 的更新。
他们声明他们“只为购买了 Java 支持或拥有需要 Java 6 的 Oracle 产品的客户”提供更新。请参阅http://www.java.com/en/download/faq/java_6.xml。但是他们指的是什么支持选项?
我浏览了网站,我能找到的最相关的支持选项是“Oracle Java SE Advanced”(https://shop.oracle.com/pls/ostore/f?p=dstore:product:0:: NO:RP,6:P6_LPI:123775498017471532635010),但最低订购金额为 6,700 英镑。
我只是迷路了吗?是否有一些更明显/更便宜的方式来访问版本 6 的最新更新,例如这个?:http : //www.oracle.com/technetwork/java/javase/2col/6u71-bugfixes-2100823。 html
谢谢
我正在创建一个运行与特定 Java 版本相关联的自定义应用程序的 dockerfile。
我正在使用 centos7 基本映像,因为这是我所指的一篇文章所使用的,而且因为我必须使用某些东西,所以它与任何文章一样好。老实说,我不在乎我使用的是什么用户空间。这张图片的重点是托管的软件,Linux 发行版本身只是达到目的的一种手段——重要的是,JDK 不会被其他应用程序或用户使用。
如上所述,我的应用程序与我正在使用的特定 Java 版本相关联 - 对 Java 版本的任何更新都需要在发布之前对该特定版本的软件进行全面回归测试。
我所关注的文章从相关的 dockerfile JDK 安装部分开始,如下所示:
FROM centos:centos7
RUN yum makecache \
&& yum update -y \
&& yum install -y \
java-1.8.0-openjdk-devel \
&& yum clean all
Run Code Online (Sandbox Code Playgroud)
这还不够具体,任何时候构建图像都会得到一个随机版本的 Java,这不是我想要的,我需要一个特定版本的 Java。
我将 docker 文件更改为如下所示:
FROM centos:centos7
RUN yum makecache \
&& yum update -y \
&& yum install -y \
java-1.8.0-openjdk-devel-1.8.0.65-3.b17.el7 \
&& yum clean all
Run Code Online (Sandbox Code Playgroud)
并且 docker 镜像构建良好。那是在十二月。
本周,我需要对软件的不同部分进行小的更改并重新构建映像的新版本,但映像构建现在失败了。
构建现在失败,因为该特定版本的 java 包不再可用(至少,我认为这就是它告诉我的):
Error: Package: 1:java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64 …Run Code Online (Sandbox Code Playgroud) 一台 Jenkins 服务器在 Linux 机器上以 Java 1.7 运行,我需要将其更改为 1.8,以便我可以运行特定的插件。
Linux 机器安装了 Java 1.8 JDK/JRE,但我找不到告诉 Jenkins 服务器使用它的方法?我在 Windows 服务器上找到了如何执行此操作的指南,但没有与 Linux Jenkins 服务器相关或转移的内容。
有没有办法在 linux 上更改 Jenkins 服务器使用的 JRE?
像这样的 linux 版本:https : //dzone.com/articles/make-jenkins-windows-service