有谁知道 PrintGCDetails 是否对 java 性能有很大影响?我一直在使用与生产服务器相同的设置在登台服务器上监视我们的 java 垃圾收集。
我认为可以肯定地说我不应该在生产中启用此功能,但我不知道是否真的对性能有任何影响。
有谁知道 PrintGCDetails 是否对 java 性能有很大影响?我一直在使用与生产服务器相同的设置在登台服务器上监视我们的 java 垃圾收集。
我认为可以肯定地说我不应该在生产中启用此功能,但我不知道是否真的对性能有任何影响。
我已经阅读了很多关于 java 内存管理、垃圾收集等的内容,并且我正在尝试为我的有限内存(小型 ec2 实例上的 1.7g)找到最佳设置我想知道两者之间是否存在直接关联我的代码大小和 permgen 设置。根据太阳:
永久代是特殊的,因为它保存了虚拟机所需的数据来描述在 Java 语言级别上没有等价物的对象。例如,描述类和方法的对象存储在永久代中。
对我来说,这意味着它实际上是在存储我的类 def'ns 等......这是否意味着我的编译代码大小和我应该设置的 permgen 之间存在直接关联?我的整个应用程序大约 40mb,我注意到我们正在使用 256mb permgen。我在想也许我们正在使用可以更好地分配给动态代码(如对象实例等)的内存......
我遇到了在 tomcat 中运行的 JRuby (rails) 应用程序的问题。有时页面请求可能需要一分钟才能返回(即使 rails 日志在几秒钟内处理了请求,所以这显然是一个 tomcat 问题)。
我想知道哪些设置最适合 java 堆大小。我知道没有明确的答案,但我想也许有人可以评论我的设置。
我在一个具有 1.7g 内存的小型 EC2 实例上。我有以下 JAVA_OPTS:
-Xmx1536m -Xms256m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled
我的第一个想法是 Xmx 太高了。如果我只有 1.7gb 并且我分配了 1.5gb 给 java,我觉得我会得到很多分页。通常,我的 java 进程显示(顶部)1.1g res 内存和 2g 虚拟。
我还在某处读到,将 Xms 和 Xmx 设置为相同的大小会有所帮助,因为它消除了在内存分配上花费的时间。
我不是 java 人,但我的任务是解决这个问题,我正试图找出从哪里开始。非常感谢任何提示!
更新
我已经开始使用分析垃圾收集转储-XX:+PrintGCDetails
当我注意到这些偶尔的长加载时间时,gc 日志会发疯。我做的最后一个(花了 25 秒完成)我有 gc 日志行,例如:
1720.267: [GC 1720.267: [DefNew: 27712K->16K(31104K), 0.0068020 secs] 281792K->254096K(444112K), 0.0069440 secs]
1720.294: [GC 1720.294: [DefNew: 27728K->0K(31104K), 0.0343340 secs] 281808K->254080K(444112K), 0.0344910 secs]
一次请求大约有 300 个!现在,我不完全明白为什么它总是 GC'ng 从 ~28m 一遍又一遍地下降到 0。
我已经设置了一个 VMWare 实例来运行 CastIron 集成设备。我为实例分配了 2gb 的内存,假设它将作为物理内存(我的服务器总共有 8gb)。
然而,当我top
在服务器上查看时,vmware-vmx 进程有大约 100m 常驻内存和 1900m 虚拟内存。
运行 CastIron 报告该设备经常达到 50% 的内存使用率。这是否意味着我使用 900mb 的硬盘空间作为内存?我希望 VMWare 使用 2gb 的物理内存,没有交换。谁能告诉我如何实现这一目标?
安装
Debian Lenny 5.0.3
VMWare 服务器 2.0.2
我使用 hudson 作为我的 CI,它运行良好,构建运行他们的测试,代码指标,所有这些好东西。但目前,仅此而已,没有自动部署,我必须在之后手动进行。我还没有为哈德森找到任何类型的 capistrano 插件,我什至看不到在哈德森成功构建后我可以在哪里运行我的 cap deploy。
有谁知道我需要什么才能在成功构建时自动部署到测试服务器?我希望每次提交都强制构建并定期部署到测试,这样我就可以立即看到所有内容。
我在几个地方问过这个问题,但没有找到答案。这应该很简单,也是一个很常见的问题。不幸的是,我对 tomcat 和 mod_proxy 一无所知,所以我无法弄清楚。
我有一些在 tomcat 中运行的应用程序,作为战争安装,我可以在以下位置访问它们
myserver.com:8080/myapp
我只是想创建一个使用 mod_proxy将myapp.myserver.com转发到这个myserver.com:8080/myapp的 apache vhost。
Hudson 就是一个完美的例子,没有额外的配置,只是一场部署战争。所以我设置了以下apache vhost:
<VirtualHost *:80>
ServerName hudson.myserver.ca
ProxyPreserveHost On
ProxyPass / http://localhost:8080/hudson
ProxyPassReverse / http://localhost:8080/hudson
</VirtualHost>
我的 proxy.conf 是:
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
ProxyVia On
</IfModule>
每个应用程序上的每个请求都具有相同的行为。例如,我去 hudson.myserver.ca,它出于某种原因转发到 hudson.myserver.ca/hudson,它给出了一个 tomcat 404,上面写着
The requested resource (/hudsonhudson/) is not available.
发生在 hudson、jira、confluence 和任何其他应用程序上。
额外的“哈德森”是怎么回事,为什么这不起作用?
我在 Debian Lenny 上使用 apache2。在我的 proxy.conf 我尝试添加
Allow from localhost
正如其他一些论坛中建议的那样,让代理工作。没用。只有当我说它才有效
Allow from all
我的问题是这个。此 Allow from all 指令是否有任何安全隐患?大多数人都说要尽可能地限制它,但是“全部”是客户对吗?我希望任何人,无论他们的 IP 是正确转发。有没有更好的方法来配置它?
所以我安装了 jira 并通过 mydomain.com:8080/jira 访问 i。我真的很想通过 jira.mydomain.com 访问我。我启用了 mod_proxy 并将以下内容放入 apache vhost:
ServerName jira.mydomain.com
ProxyPreserveHost On
ProxyPass / http://localhost:8080/jira
但是,它会将我转发到 jira.mydomain.com/jira。这是行不通的。我也将 jira 中的基本 URL 更改为 jira.mydomain.com。这是怎么回事,为什么额外的 /jira 存在?
当我通过tomcat(confluence,hudson等)运行其他应用程序时,我将jira安装为战争安装
我尝试使用谷歌搜索,发现比较这两者的唯一文章是从 2005 年到 2002 年。我刚刚设置了我的第一个 Tomcat 实例来为我正在做的项目运行 Jira。我想通过端口 80 和 apache 代理它。据我所知,我可以使用 mod_proxy 轻松转发流量。使用 mod_jk 有什么区别?这两个模组之间是否有任何性能/安全差异?有人有任何通过 apache 设置转发的提示/经验吗?我正在运行 debian Lenny。
我想知道当我在 debian 上使用 apt 安装 Mysql 时如何更改 mysql 数据库的默认位置。EC2 实例将 /mnt 设置为拥有大部分磁盘空间,只为 / 留下 10gb。
所以我希望数据库以某种方式存储在 /mnt 中。默认情况下,配置等可以保留在它们安装的位置,我只希望实际的磁盘存储在 /mnt 上。
有小费吗?
对,所以我发现datadir指令是mysql存储它的数据库的地方,所以在/etc/mysql/my.cnf中我将datadir更改为/mnt/mysql。但是现在启动 mysql 失败了,我在 mysql.err 日志或任何 mysql 日志中看不到任何内容。有什么想法吗?
我试图让Confluence wiki 在 Tomcat 内的 Debian 盒子上运行。现在,我以前从未使用过Tomcat,所以我真的不太了解它。这是我的设置:
Debian Lenny 5.0
Tomcat 5.5.26-5
Open jdk openjdk-6-jre
全部安装 apt
Tomcat 本身可以工作,我可以查看管理员和管理器屏幕,但是当我尝试启动 confluence 应用程序时,日志显示:
Oct 6, 2009 1:00:00 AM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Oct 6, 2009 1:00:00 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/confluence] startup failed due to previous errors
很大的帮助:(
我的 /var/lib/tomcat5.5/conf/Catalina/localhost 目录中有一个名为 confluence.xml 的文件,其中包含以下内容
<Context path="/confluence" docBase="/usr/share/tomcat5.5/atlassian/confluence-3.0.1/confluence" debug="0" reloadable="true">
</Context>
以及在该上下文中指定的合流目录。Tomcat 在管理器中看到它,但无法启动它。
我的 server.xml 包含以下连接器:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
我认为这是非常标准的。我的问题是,为什么我在日志中看不到更多信息?如何获得此应用程序的更具体的日志记录。Tomcat 文档说此上下文中的 Logger 指令不再有效。但是告诉我“因为以前的错误”并没有真正的帮助。另外,如果有人对设置 Confluence 有任何提示,我会全力以赴