这是个有趣的问题。
我们的一个weblogic应用服务器,运行于HP-UX,启动后,发现操作系统时间与时间服务器不一致(差一分多钟),所以就把操作系统时间与时间服务器同步了一下。这时候怪事出现了,从weblogic应用中取得的时间与操作系统时间不一致了(没注意weblogic中取得的时间是否与操作系统修改之前的时间相同,待会儿验证。已经确认,目前发现HP的JDK会有这个问题,SUN的JDK没有问题)。
在网上查了一下,发现这个问题可能是由于HP-UX的JDK取时间机制造成的。
HP-UX SDK 1.3.1.08的release notes,里面有这么一段说明,原文如下:
date/time methods - new defaults
Since SDK 1.2.2.09 and SDK 1.3.1, there has been a change in the way the HotSpot JVM uses the gettimeofday() system call to obtain date and time information.
For performance reasons a new mechanism is used that uses the number of cpu ticks since the application started, to calculate the current time.
As a result, changes to the system date or time using date(1), adjtime(2) or time synchronization utilities such as ntp will not be reflected in the date and time that Java returns, until the process is restarted. If your application requires that Java immediately reflects such system time changes, you can use the -XX:+UseGetTimeOfDay option to tell the JVM to use the gettimeofday call instead of the new, lightweight mechanism. However you may notice a drop in performance.
上面说的意思大致是,HP-UX SDK 1.2.2.09 和HP-UX SDK 1.3.1之后,由于performance的原因,JVM中读取系统时间的时候,是在应用程序启动之后,读一次OS的系统时间,然后JVM中根据CPU ticks来自己计算时间,而不是实时地去OS 取系统时间。这样的话,在应用程序运行当中,如果有ntp改变了OS的系统时间,那么JVM和OS的系统时间就不一致了。只有等下一次应用程序重新启动的时候,JVM才会重新读取OS系统时间。
解决方案就是启动应用程序的时候,用-XX:+UseGetTimeOfDay参数,虽然这会导致performancex下降,但是可以保证JVM和OS的系统时间一致。
以前一直以为JVM是实时取OS的时间的,今天的问题再次教育了我:一切不能想当然
分享到:
相关推荐
【Java GC on HP-UX Itanium】和【JDK on HP-UX 简要介绍及性能调试概要】这两个主题涉及到的是Java在HP-UX操作系统上的运行环境、内存管理和性能优化,特别是针对Itanium架构的Java垃圾收集(GC)机制。以下是详细...
应用程序移植到HP-UX的指南中,文档为用户提供了从其他平台(如Solaris或IBM/AIX)将JAVA应用程序迁移到HP的UNIX(HP-UX)操作系统上的详细指导。尽管JAVA语言具有良好的可移植性,但在不同的UNIX系统平台上,开发者...
在IT领域,尤其是在服务器操作系统和开发环境中,HP-UX(Hewlett-Packard Unix)是一个重要的角色,尤其在大型企业中被广泛使用。本安装包“hp-ux Superdome2 java8 jdk8.0.23 Ita”是为在HP-UX操作系统上的...
书中还提到了HP-UX系统对于PA-RISC架构的特殊支持,例如在socket接受或读取操作挂起时关闭socket的功能。此外,还涉及了标准与非标准选项的使用,以及特定功能的介绍,比如对于Java 1.3版本的FastSwing支持、非阻塞I...
HP-UX作为一种基于UNIX的操作系统,在运行Java应用程序时可能会遇到各种问题,例如性能瓶颈、内存泄漏、死锁等。因此,为了帮助开发人员和系统管理员更好地理解和解决这些问题,该指南详细介绍了多种诊断工具及其...
在HP-UX操作系统中,Java应用性能调优是一项关键任务,以确保应用程序高效运行并充分利用系统资源。本文主要概述了在HP-UX环境下进行Java应用性能优化的一些基本策略和工具。 首先,性能问题往往与Java虚拟机(JVM...
首先,HP JVM(Java虚拟机)是HP公司开发的一款优化过的JVM,它与操作系统有紧密的集成,特别是在Itanium架构上。这种集成使得HP JVM能够生成最优的代码,充分利用处理器特性,从而在多线程性能、操作系统扩展性和...
尤其是在HP UNIX(简称HP-UX)操作系统上运行的Java应用程序,其性能表现往往取决于JVM(Java虚拟机)参数的设置以及系统级核心参数的配置。本资料主要探讨了HP Java内存管理和HP-UX核心参数的调整,以实现最佳的...
这一步骤确保操作系统层面不再保留任何与Sybase相关的环境设置,从而避免未来可能的冲突。 #### 步骤五:删除服务项 在`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services`目录下,找到并删除所有与Sybase服务...
- **Windows操作系统的优化**:推荐使用服务器版本的Windows操作系统,因为非服务器版本可能在用户数、网络连接数等方面存在限制。此外,还需定期为操作系统安装最新的安全补丁。 ##### 2.1.3 Tomcat与其他Web...
- HP JVM(Sun JVM的一个简单移植版)用于所有运行HP-UX操作系统的平台。 3. **Java应用程序栈结构** - JVM采用面向对象设计,通过构建块组件提供高级功能,简化最终用户的开发和运行时环境。 - JVM的核心运行时...
- **Sun HotSpot 基础的 JVM**:例如 Solaris 上的 Sun HotSpot JVM 和 HP-UX 上的 HP JVM。 IBM 的 JVM 特别之处在于: - **多平台支持**:如 PowerPC、IA32、x86-64 和 390(Linux 或 z/OS)等。 - **高度可配置...
标题中的“hp_prstat”是HP(Hewlett Packard)公司为监控其操作系统环境下的应用程序性能而设计的一款工具,特别适用于分析Weblogic服务器的CPU使用情况。在HP UNIX或HP-UX系统中,hp_prstat是性能监视的利器,能够...
- 集成系统监控工具,如HP UX的System Management Homepage (SMH),监控操作系统、网络和数据库的状态,以便快速定位性能瓶颈。 7. **负载均衡与故障转移**: - 配置负载均衡器以分散请求到多个WebLogic实例,...
- **操作系统**:针对不同的操作系统,如HP-UX,需要调整参数以优化WebLogic Server运行。例如,增加最大线程数、文件描述符数量,调整TCP参数等。此外,交换区的大小也很关键,通常应设定为内存的两倍或与内存大小...
Sun JVM主要应用于运行Solaris操作系统的平台上,而HP JVM则是基于Sun JVM的一个简单移植版本,主要用于运行HP-UX操作系统的平台。 #### Java应用程序栈概述 JVM采用面向对象的设计思想构建而成,通过提供一系列...
WebLogic服务器性能优化是一项复杂而重要的任务,它涉及到多个层面,包括服务器配置、操作系统调优、数据库优化等。以下是对这些关键领域的详细说明: 首先,理解性能目标是至关重要的。性能优化的目标通常包括:...