我最近转变了一些Java应用程序与Linux的手动配置的大页面上运行,如所描述这里。我指出“手动配置”是因为它们不是 透明的大页面,这给我们带来了一些性能问题。
所以现在,我在一个系统上运行了大约 10 个 tomcat,我很想知道每个 tomcat 使用了多少内存。
我可以/proc/meminfo按照Linux Huge Pages Usage Accounting 中的描述获取摘要信息。
但是我找不到任何工具来告诉我每个进程的实际大页面使用情况。
我/proc/pid/numa_stat探查了一下,发现了一些有趣的信息,这些信息使我如此粗暴:
function pshugepage () {
HUGEPAGECOUNT=0
for num in `grep 'anon_hugepage.*dirty=' /proc/$@/numa_maps | awk '{print $6}' | sed 's/dirty=//'` ; do
HUGEPAGECOUNT=$((HUGEPAGECOUNT+num))
done
echo process $@ using $HUGEPAGECOUNT huge pages
}
Run Code Online (Sandbox Code Playgroud)
或者这个,在perl中:
sub counthugepages {
my $pid=$_[0];
open (NUMAMAPS, "/proc/$pid/numa_maps") || die "can't open numa_maps";
my $HUGEPAGECOUNT=0;
while (my $line=<NUMAMAPS>) {
next unless ($line …Run Code Online (Sandbox Code Playgroud) CentOS 5.9
如果我运行kill -3 <java process pid>实际会发生什么?根据这篇红帽文章,我知道生成了 Java 线程转储,但进程是否终止?它似乎不是基于我的测试:
[root@foobox ~]# kill -3 14559
[root@foobox ~]# service foo status
foo (pid 14559) is running...
Run Code Online (Sandbox Code Playgroud)
换句话说:我可以通过这种方式收集线程转储而不影响服务吗?
我刚开始使用 CentOS。
我安装Java
yum install java-1.7.0-openjdk-devel
Run Code Online (Sandbox Code Playgroud)
添加了一个用户:
$useradd supersite
Run Code Online (Sandbox Code Playgroud)
下载的tomcat:
$wget http://apache.mirror.anlx.net/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.zip
$unzip apache-tomcat-7.0.42.zip -d tomcat7
Run Code Online (Sandbox Code Playgroud)
创建的服务配置:
$ cd /etc/init.d
$ edit tomcat7-supersite
Run Code Online (Sandbox Code Playgroud)
我从这里复制了文件。
但是,当我尝试以 root 用户身份运行时(我看到我是 root@myip)
service tomcat7-supersite start
Run Code Online (Sandbox Code Playgroud)
我得到:
env: /etc/init.d/tomcat7-supersite: Permission denied
Run Code Online (Sandbox Code Playgroud)
为什么?
我的目标是在我的组织中建立一个 Java 部署规则集,但是当我们有一个通过 Active Directory 运行的工作 CA 时,我不想向第三方证书颁发机构支付代码签名证书。我遵循了我认为正确的程序来完成这项工作,但是当我最终运行任何 Java 小程序时,我收到以下错误:
无法验证自签名部署规则集 jar
我遵循的步骤是:
上述步骤均已正确完成 - 与无效证书链等无关。我可以在 Java 控制面板中看到根 CA 证书,当我单击控制面板中的部署规则集链接并查看其证书时,我看到了第 6 步中的证书及其父 CA,两者都有未来的到期日期和据我所知的正确信息。但是我在运行任何小程序时仍然收到验证错误
那么 - 是否根本不可能做到这一点,我们必须支付证书费用?或者我(希望)做错了什么?如果有人有任何见解,将不胜感激,谢谢!
我们有一个在 Amazon 上运行的基于 Java 的应用程序,并且已经配置了我们的 Amazon ELB 以成功连接到它们。但是,我们看到 Cookie 标志未设置为安全。
Name Value Domain Path Expires Secure
AWSELB lkajsldf test.com / Session No
Run Code Online (Sandbox Code Playgroud)
如何使 cookie 安全?
我们有一个在 Mac OS X 上运行的 Java 服务器应用程序。
有时这个应用程序变得没有响应,我们不得不使用kill -9. 然而,这个过程并没有消失;它似乎仍然是ps,其名称周围带有括号,并且 STAT 列中有一个问号:
$ ps u -p 776
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
camadmin 776 0.0 0.0 0 0 ?? ?E 5:12PM 0:00.00 (java)
Run Code Online (Sandbox Code Playgroud)
更重要的是,服务器正在使用的端口仍然是绑定的:
$ netstat -na | grep 9902
tcp4 0 0 *.9902 *.* LISTEN
Run Code Online (Sandbox Code Playgroud)
即使它不可见lsof:
$ sudo lsof -P -i tcp | grep 9902
$
Run Code Online (Sandbox Code Playgroud)
由于端口仍然绑定,我们无法重新启动服务器应用程序。没有重新启动机器,可以做些什么来释放端口并真正杀死这个进程?
我已将内部证书颁发机构导入 Java 的 CA 密钥库。(使用 keytool 导入“cacerts”商店)这很好用,直到我更新 Java RPM。此时,所有这些导入的证书都不会转移到新安装中。因此,当尝试建立 SSL 连接时,应用程序会爆炸。
有没有办法通过 Java 升级使这些证书持久化?或者在升级触发器上重新运行导入命令的简单方法?我显然可以将这些命令编写到我的升级过程中,但我希望有一个更优雅的解决方案。
作为参考,这是 RHEL 5.10 等效版本(技术上为 Oracle Linux)。我正在通过官方存储库使用 java-1.7.0-openjdk,并且刚刚升级到 U65。
我正在尝试在 Red Hat Enterprise Linux Server 6.5 (Santiago) 版上启动一个进程,该进程失败了,因为它无法分配足够的内存。
# There is insufficient memory for the Java Runtime Environment to continue.
# Cannot create GC thread. Out of system resources.
# An error report file with more information is saved as:
Run Code Online (Sandbox Code Playgroud)
问题不在于 Java 应用程序本身 - 当我简单地运行时,我也会收到错误:
版本
查看内存消耗:
自由 -m
total used free shared buffers cached
Mem: 32069 31276 792 0 556 16948
-/+ buffers/cache: 13771 18297
Swap: 9325 38 9287
Run Code Online (Sandbox Code Playgroud)
因此,Mem 报告说正在使用 32 Gb 内存中的 31 Gb,但应该有 18 Gb …
在我们公司,我们使用 GPO 来推送 Java 更新等软件更新。我们在位于不同国家/地区的不同办公室有大约 150 名用户,所有用户都使用 Windows 7。我们有一些特定于办公室的应用程序,并且没有用户具有管理员权限。
最近,在我们的一些办公室,有时用户会需要不同版本的 Java;他们使用的一个应用程序需要版本 A 的 Java,而另一个应用程序需要版本 B。最糟糕的情况是同一用户需要不同的 Java 版本,这取决于所使用的应用程序(Web 应用程序或独立应用程序)。
本月和上个月,我们在两个办公室的几个用户遇到了这个问题。到目前为止,我们在需要时安装了足够的 Java 版本。显然,这是耗时的。下个月,我们将考虑为旧 Java 版本提供特定的虚拟机或计算机。但这也不是最好的解决方案。其他解决方案是什么?
公司如何处理对同一用户的不同(且不兼容)Java 需求的需求?
java ×10
linux ×6
centos ×2
redhat ×2
amazon-elb ×1
certificate ×1
group-policy ×1
kill ×1
linux-kernel ×1
mac-osx ×1
netstat ×1
pid ×1
port ×1
tomcat ×1
update ×1
windows-7 ×1
yum ×1