COSBench time drift between controller and driver-driver1 is xxx mSec

本文介绍了一个关于COSBench测试工具中出现的时区不同步问题及其解决方案。该问题导致测试过程中时间差异过大,通过指定Java进程的时区设置成功解决了这一问题。
COSBench  time drift between controller and driver-driver1 is 18898997 mSec


question:
2016-06-22 11:47:56,749 [INFO] [WorkloadProcessor] - START WORK: init_create_bucket
2016-06-23 00:32:54,000 [INFO] [AbstractCommandTasklet] - time drift between controller and driver-driver1 is 18898997 mSec
2016-06-23 00:32:54,000 [WARN] [AbstractCommandTasklet] - time drift is still longer than tolerable time drift 300 mSec after 3 times of synchronization
         每次启动一个测试用例,都报失败,并且测试机器的时间被有规律地修改,查看cosbench的日志发现是cosbench的controller和driver取系统时间的时区有差异导致的,
           然后cosbench主动去修改了操作系统时间,但是下一次测试取时间仍然因为时区问题无法通过,下述我们通过制定java进程的时区来同步controller和driver的时间,就可以顺利测试了。

answer:

Step one:
    cp /usr/share/zoneinfo/America/Los_Angeles  /etc/localtime

Step two:

vim cosbench-start.sh

#/usr/bin/nohup java  -Dcosbench.tomcat.config=$TOMCAT_CONFIG -server -cp main/* org.eclipse.equinox.launcher.Main -configuration $OSGI_CONFIG -console $OSGI_CONSOLE_PORT 1> $BOOT_LOG 2>&1 &
/usr/bin/nohup java  -Duser.timezone=America/Los_Angeles    -Dcosbench.tomcat.config=$TOMCAT_CONFIG -server -cp main/* org.eclipse.equinox.launcher.Main -configuration $OSGI_CONFIG -console $OSGI_CONSOLE_PORT 1> $BOOT_LOG 2>&1 &


tips:  Los_Angeles  只是示例,具体时区请根据自己所在时区配置。
虽然所给引用未涉及解决浏览器与服务器时间不同步导致查询结果时间偏移问题的方法,但可以从常见的技术思路来提供解决方案。 一种方法是在服务器端进行时间的统一处理。在服务器端记录和处理时间信息,避免依赖浏览器的本地时间。当客户端发起查询请求时,服务器使用自身的准确时间来进行查询操作。例如在数据库查询时,使用服务器的系统时间作为时间条件,而不是使用客户端传递过来的可能不准确的时间。 ```python import datetime import sqlite3 # 连接数据库 conn = sqlite3.connect('example.db') cursor = conn.cursor() # 获取服务器当前时间 server_time = datetime.datetime.now() # 执行查询,使用服务器时间作为条件 query = "SELECT * FROM records WHERE timestamp >= ?" cursor.execute(query, (server_time,)) results = cursor.fetchall() # 处理查询结果 for row in results: print(row) # 关闭数据库连接 conn.close() ``` 另一种方法是使用网络时间协议(NTP)来同步浏览器和服务器的时间。服务器可以定期与NTP服务器进行时间同步,确保自身时间的准确性。对于浏览器端,可以使用JavaScript的`Date`对象结合NTP服务器的时间来获取准确时间。不过这种方法在实际应用中可能受到网络延迟等因素的影响。 ```javascript // 使用第三方NTP库获取准确时间 // 这里只是示例,实际使用需要引入具体的NTP库 function getAccurateTime() { // 模拟从NTP服务器获取时间 const accurateTime = new Date(); return accurateTime; } // 在查询时使用准确时间 const queryTime = getAccurateTime(); // 发送查询请求到服务器,使用queryTime作为时间条件 ``` 还可以在客户端和服务器之间传递时间戳时,采用统一的时间戳格式,并且在服务器端对客户端传递的时间戳进行验证和调整。如果发现客户端时间与服务器时间偏差过大,可以进行相应的提示或者调整查询条件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值