AIX 64 位,7G 内存
$ uname -a
AIX server3 1 7 00036073D600
$ java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap6460_26sr1-20111114_01(SR1))
IBM J9 VM (build 2.6, JRE 1.6.0 AIX ppc64-64 20111113_94967 (JIT enabled, AOT enabled)
J9VM - R26_Java626_SR1_20111113_1649_B94967
JIT - r11_20111028_21230
GC - R26_Java626_SR1_20111113_1649_B94967
J9CL - 20111113_94967)
JCL - 20111112_01
$ time /opt/IBM/WebSphere/AppServer/java/bin/java
...
real 0m40.62s
user 0m0.43s
sys 0m0.04s
在没有任何应用程序的情况下启动java命令需要40s。 JRE(64 位)是 WebSphere V8 的一部分,需要 20 分钟。启动应用程序服务器。
在同一个AIX下,还有一个JRE(32bit),效果很好。
$ /usr/java6/bin/java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap3260sr9fp2-20110627_03(SR9 FP2))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 AIX ppc-32 jvmap3260sr9-20110624_85526 (JIT enabled, AOT enabled)
J9VM - 20110624_085526
JIT - r9_20101028_17488ifx17
GC - 20101027_AA)
JCL - 20110530_01
$ time /usr/java6/bin/java
real 0m0.70s
user 0m0.64s
sys 0m0.05s
使用truss发现了一些东西,java要启动的时候,在thread_tsleep()处卡了很久。为什么?如何纠正?
kopen("/etc/irs.conf", O_RDONLY) Err#2 ENOENT
_thread_self() = 26738737
getdomainname(0x09001000A00E44F8, 1024) = 0
_thread_self() = 26738737
_thread_self() = 26738737
_thread_self() = 26738737
getdomainname(0x09001000A00E44F8, 1024) = 0
_thread_self() = 26738737
_thread_self() = 26738737
_thread_self() = 26738737
kopen("/etc/hesiod.conf", O_RDONLY) Err#2 ENOENT
_thread_self() = 26738737
getdomainname(0x09001000A00E44F8, 1024) = 0
_thread_self() = 26738737
_thread_self() = 26738737
_thread_self() = 26738737
getdomainname(0x09001000A00E44F8, 1024) = 0
_thread_self() = 26738737
_thread_self() = 26738737
_thread_self() = 26738737
getdomainname(0x09001000A00E44F8, 1024) = 0
_thread_self() = 26738737
_thread_self() = 26738737
socket(2, 2, 0) = 4
getsockopt(4, 65535, 4104, 0x000001001012A934, 0x000001001012A930) = 0
connext(4, 0x00000100103F37B8, 16) = 0
_esend(4, 0x000001001012B860, 40, 0, 0x0000000000000000) = 40
_poll(0x000001001012AA00, 1, 5000) = 1
_enrecvfrom(4, 0x000001001012CBB0, 1024, 0, 0x000001001012B1C0, 0x000001001012A9E8, 0x0000000000000000) = 56
close(4) = 0
socket(2, 2, 0) = 4
getsockopt(4, 65535, 4104, 0x000001001012A934, 0x000001001012A930) = 0
connext(4, 0x00000100103F37B8, 16) = 0
_esend(4, 0x000001001012B860, 40, 0, 0x0000000000000000) = 40
_poll(0x000001001012AA00, 1, 5000) = 1
_enrecvfrom(4, 0x000001001012CBB0, 1024, 0, 0x000001001012B1C0, 0x000001001012A9E8, 0x0000000000000000) = 94
_esend(4, 0x000001001012B860, 25, 0, 0x0000000000000000) = 25
_poll(0x000001001012AA00, 1, 5000) = 1
_enrecvfrom(4, 0x000001001012CBB0, 1024, 0, 0x000001001012B1C0, 0x000001001012A9E8, 0x0000000000000000) = 25
close(4) = 0
socket(2, 2, 0) = 4
_esendto(4, 0x000001001012B860, 25, 0, 0x00000100103F37C8, 16, 0x0000000000000000) = 25
thread_tsleep(0, 0x09001000A030F400, 0x0000000000000000, 0x0000000000000000) (sleeping...)
_poll(0x000001001012AA00, 1, 5000) = 0
close(4) = 0
socket(2, 2, 0) = 4
_esendto(4, 0x000001001012B860, 25, 0, 0x00000100103F37C8, 16, 0x0000000000000000) = 25
thread_tsleep(0, 0x09001000A030F400, 0x0000000000000000, 0x0000000000000000) (sleeping...)
_poll(0x000001001012AA00, 1, 5000) = 0
close(4) = 0
socket(2, 2, 0) = 4
_esendto(4, 0x000001001012B860, 25, 0, 0x00000100103F37C8, 16, 0x0000000000000000) = 25
thread_tsleep(0, 0x09001000A030F400, 0x0000000000000000, 0x0000000000000000) (sleeping...)
_poll(0x000001001012AA00, 1, 10000) = 0
close(4) = 0
socket(2, 2, 0) = 4
_esendto(4, 0x000001001012B860, 25, 0, 0x00000100103F37C8, 16, 0x0000000000000000) = 25
thread_tsleep(0, 0x09001000A030F400, 0x0000000000000000, 0x0000000000000000) (sleeping...)
_poll(0x000001001012AA00, 1, 20000) = 0
close(4) = 0
getdomainname(0x000001001012CD10, 256) = 0
kopen("/etc/hosts", O_RDONLY) = 4
kioctl(4, 22528, 0x0000000000000000, 0x0000000000000000) Err#25 ENOTTY
kfcntl(4, F_SETFD, 0x0000000000000001) = 0
kioctl(4, 22528, 0x0000000000000000, 0x0000000000000000) Err#25 ENOTTY
kread(0x0000000000000004, 0x0000010010416538, 0x0000000000001000) = 0x00000000000007B0
0x00000000: " # = = = = = = = = = ="..
kread(0x0000000000000004, 0x0000010010416538, 0x0000000000001000) = 0x0000000000000000
0x00000000: " # = = = = = = = = = ="..
close(4) = 0
__libc_sbrk(0x0000000000020020) = 0x0000010010421C20
带时间戳
1.8662: socket(2, 2, 0) = 4
1.8666: _esendto(4, 0x000001001012B860, 25, 0, 0x00000100103F38A8, 16, 0x0000000000000000) = 25
3.8671: thread_tsleep(0, 0x09001000A030F400, 0x0000000000000000, 0x0000000000000000) (sleeping...)
1.8669: _poll(0x000001001012AA00, 1, 5000) = 0
6.8705: close(4) = 0
6.8710: socket(2, 2, 0) = 4
6.8715: _esendto(4, 0x000001001012B860, 25, 0, 0x00000100103F38A8, 16, 0x0000000000000000) = 25
8.8723: thread_tsleep(0, 0x09001000A030F400, 0x0000000000000000, 0x0000000000000000) (sleeping...)
6.8720: _poll(0x000001001012AA00, 1, 5000) = 0
11.8726: close(4) = 0
11.8729: socket(2, 2, 0) = 4
11.8732: _esendto(4, 0x000001001012B860, 25, 0, 0x00000100103F38A8, 16, 0x0000000000000000) = 25
13.8738: thread_tsleep(0, 0x09001000A030F400, 0x0000000000000000, 0x0000000000000000) (sleeping...)
11.8736: _poll(0x000001001012AA00, 1, 10000) = 0
21.8741: close(4) = 0
21.8744: socket(2, 2, 0) = 4
21.8748: _esendto(4, 0x000001001012B860, 25, 0, 0x00000100103F38A8, 16, 0x0000000000000000) = 25
23.8754: thread_tsleep(0, 0x09001000A030F400, 0x0000000000000000, 0x0000000000000000) (sleeping...)
21.8752: _poll(0x000001001012AA00, 1, 20000) = 0
41.8756: close(4) = 0
41.8760: getdomainname(0x000001001012CD10, 256) = 0
41.8763: kopen("/etc/hosts", O_RDONLY) = 4
41.8767: kioctl(4, 22528, 0x0000000000000000, 0x0000000000000000) Err#25 ENOTTY
41.8770: kfcntl(4, F_SETFD, 0x0000000000000001) = 0
41.8773: kioctl(4, 22528, 0x0000000000000000, 0x0000000000000000) Err#25 ENOTTY
kread(0x0000000000000004, 0x0000010010416618, 0x0000000000001000) = 0x00000000000007B0
0x00000000: " # = = = = = = = = = ="..
kread(0x0000000000000004, 0x0000010010416618, 0x0000000000001000) = 0x0000000000000000
0x00000000: " # = = = = = = = = = ="..
41.8782: close(4) = 0
你好
Quit in sem_wait at 0x9000000002632d8 ($t3)
0x9000000002632d8 (sem_wait+0x98) e8410028 ld r2,0x28(r1)
thread state-k wchan state-u k-tid mode held scope function
>$t1 run blocked 31391751 u no sys _event_sleep
_event_sleep(??, ??, ??, ??, ??, ??) at 0x9000000008365c4
_event_wait(??, ??) at 0x900000000837064
_cond_wait_local(??, ??, ??) at 0x90000000084521c
_cond_wait(??, ??, ??) at 0x900000000845808
pthread_join(??, ??) at 0x90000000082d2b0
unnamed block in ContinueInNewThread(continuation = 0x6c6f636b6c002e66, stack_size = 7310577395057127012, args = 0x5f6f72002e666574), line 2286 in "java_md.c"
ContinueInNewThread(continuation = 0x6c6f636b6c002e66, stack_size = 7310577395057127012, args = 0x5f6f72002e666574), line 2286 in "java_md.c"
unnamed block in main(argc = 0, argv = 0x000001001000c178), line 532 in "java.c"
main(argc = 0, argv = 0x000001001000c178), line 532 in "java.c"
thread state-k wchan state-u k-tid mode held scope function
>$t2 run running 54329549 u no sys __fd_poll
__fd_poll(??, ??, ??) at 0x90000000012c0d4
res_send.poll(??, ??, ??) at 0x9000000001021ac
res_nsend(0x100103f37a8, 0x1001012b860, 0x1900000019, 0x1001012cbb0, 0x40000000400) at 0x9000000001011d4
res_nquery(??, ??, ??, ??, ??, ??) at 0x90000000012b5d8
res_nquerydomain(??, ??, ??, ??, ??, ??, ??) at 0x90000000012ab14
res_nsearch(??, ??, ??, ??, ??, ??) at 0x90000000012af08
res_search(??, ??, ??, ??, ??) at 0x900000000107b50
dns_ho.ho_byname2(??, ??, ??) at 0x90000000013a384
gen_ho.ho_byname2(??, ??, ??) at 0x900000000163888
gethostbyname2(??, ??) at 0x9000000001060ec
getaddrinfo2(??, ??, ??, ??, ??) at 0x900000000102ba0
getaddrinfo(??, ??, ??, ??) at 0x900000000104d34
j9sock_getaddrinfo() at 0x9000000053caad8
populateRASNetData() at 0x900000005347fc0
VMInitStages() at 0x9000000053086b0
runJ9VMDllMain() at 0x90000000530bb9c
pool.pool_do() at 0x9000000052f29c8
runInitializationStage() at 0x90000000530b890
protectedInitializeJavaVM() at 0x900000005306478
j9sig_protect() at 0x9000000053a2b9c
initializeJavaVM() at 0x90000000530585c
jniinv.JNI_CreateJavaVM() at 0x90000000530ea14
jvm.JNI_CreateJavaVM() at 0x900000000ccc510
redirector.JNI_CreateJavaVM() at 0x900000000cb5574
InitializeJVM(pvm = (nil), penv = (nil), ifn = (nil)), line 1801 in "java.c"
main(argc = 0, argv = (nil)), line 810 in "java.c"
thread state-k wchan state-u k-tid mode held scope function
>$t3 run running 52887625 k no sys sem_wait
sem_wait(??) at 0x9000000002632d8
asynchSignalReporter() at 0x9000000053a3dcc
thread_wrapper() at 0x900000000d00ad0
!!!! ThreadDump Completed- detached from debugger !!!!
更新
我找到了这个主题,并在我的 AIX 上测试了这个程序。 使用主机名时,DNS 查询延迟约 40 秒。 IP地址正常。
Java cannot resolve DNS address from AIX: UnknownHostException
顺便说一句,主机名显示 server3,当我 ping 名称时,它显示: PING server3.cf1.xx.xxxx.com ..... 我用server3.cf1.xx.xxxx.com运行程序,没有延迟。
更新2:
是IPV6的问题。 如果我添加 -Djava.net.preferIPv4Stack=true,java 应用程序运行良好。但是 java 命令仍然使用 IPV6 来查询 DNS。所以java命令有40秒的延迟,java应用对DNS查询没有延迟。
我可以在 AIX 中将默认协议(protocol)设置为 IPV4,而不是 java 参数吗?
最佳答案
我不是 100% 确定这一点,但至少值得一试:
在 AIX 上,32 位 Java VM 使用 IPv4 作为默认 IP 协议(protocol),而 64 位 VM 使用 IPv6。如果在操作系统中启用了 IPv6,但配置不正确,则 64 位 VM 可能看起来在不同的点挂起,而实际上它正在等待网络超时。这似乎符合您对桁架的分析。
您可以通过将以下选项添加到 java 命令来尝试以 IPv4 作为首选网络堆栈来启动 64 位 VM:
-Djava.net.preferIPv4Stack=true
关于Java在AIX7.1中启动很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10281998/
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/
HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
我基本上来自Java背景并且努力理解Ruby中的模运算。(5%3)(-5%3)(5%-3)(-5%-3)Java中的上述操作产生,2个-22个-2但在Ruby中,相同的表达式会产生21个-1-2.Ruby在逻辑上有多擅长这个?模块操作在Ruby中是如何实现的?如果将同一个操作定义为一个web服务,两个服务如何匹配逻辑。 最佳答案 在Java中,模运算的结果与被除数的符号相同。在Ruby中,它与除数的符号相同。remainder()在Ruby中与被除数的符号相同。您可能还想引用modulooperation.