如何运行lucene中的锁的测试实例LockVerifyServer和LockStressTest

来源:互联网 发布:阿里云矢量图 编辑:程序博客网 时间:2024/06/04 18:52

 

LockVerifyServer:是一个简单单机服务器,当你使用VerifyingLockFactory锁时必须运行该服务器。其主要是确保在一个时刻最多只有一个进程拥有该锁。

          

LockStressTest:是一个简单的获取和释放一个指定锁的单机服务器。

在这两个类里只有一个main入口方法,下面我们来讲讲如何使这两个服务器跑起来:

   LockVerifyServer需要传入一个参数,进程端口号。可以在任务管理器中找到要监控的进程的PID号。

      LockVerifyServer.java文件上右击——Debug As——Open Debug Dialog——

     

 

   LockStressTest

       Usage: java org.apache.lucene.store.LockStressTest myID verifierHostOrIP verifierPort lockFactoryClassName     lockDirName sleepTime

  myID = int from 0 .. 255 (should be unique for test process)
  verifierHostOrIP = host name or IP address where LockVerifyServer is running
  verifierPort = port that LockVerifyServer is listening on
  lockFactoryClassName = primary LockFactory class that we will use
  lockDirName = path to the lock directory (only set for Simple/NativeFSLockFactory
  sleepTimeMS = milliseconds to pause betweeen each lock obtain/release

You should run multiple instances of this process, each with its own
unique ID, and each pointing to the same lock directory, to verify
that locking is working correctly.

Make sure you are first running LockVerifyServer.

 

 从上面一段提示文字可以知道,传入的6个参数分别为:

     myID:标识ID,值为0到255之间的数字

     verifierHostOrIP :LockVerifyServer服务器运行的主机名或IP地址

     verifierPort :LockVerifyServer监控的进程端口号

     lockFactoryClassName:LockFactory 实现类,如:org.apache.lucene.store.NativeFSLockFactory

     lockDirName :锁目录路径,只有当使用SimpleFSLockFactory和NativeFSLockFactory两种锁时才需要设置,如:D:/DATAMANAGER/INDEX/SYS_3000 3000

     sleepTimeMS :锁获取和释放的时间间隔(毫秒)

如:1 192.168.0.37 3752 org.apache.lucene.store.NativeFSLockFactory D:/DATAMANAGER/INDEX/SYS_3000 3000

     你必须运行LockStressTest程序的多个实例,它们都拥有唯一的ID,并且都指向相同的锁目录,确保锁工作正常。

     必须确保先运行LockVerifyServer程序,然后再运行LockStressTest程序

    

    LockStressTest.java文件上右击——Debug As——Open Debug Dialog——

     

 

 

     只要修改第一个参数值为不同的值然后运行起来。这样可以创建LockStressTest程序的多个实例。

     注意:sleepTimeMS 的时间间隔不能太短,避免出现在短时间内new的网络连接太多,出现java.net.BindException: Address already in use: JVM_Bind的异常。

 

原创粉丝点击