DigitalPlatform / dp2

Integrated Library System / 图书馆集成系统
http://digitalplatform.github.io/dp2
Apache License 2.0
105 stars 54 forks source link

维护知识-单机版服务器不能访问MongoDB时,报ERR002 #149

Open jay2505 opened 6 years ago

jay2505 commented 6 years ago

有次安装dp2Library XE V3单机版的时候,可能以前单机版安装过,存在一些旧的配置。机器当时没有MongoDB软件。 在安装dp2Library 单机版服务器后,用dp2内务连服务器报ERROR2。 然后就去安装MongoDB软件,但当时不清楚还需要在dp2单机版服务器将MongoDB配置成Windows Service。启动dp2内务访问服务器还是报ERR002错误提示:

2018/8/31 8:08:56 ERR002 首次初始化 mongodb database 失败: 初始化 MongoClient 时出错: Unable to connect to server 127.0.0.1:27017: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:27017.
2018/8/31 8:08:56 *** 当前系统已经被挂起 ERR002。

分析得出,出现ERROR02错误的原因,是在dp2library.xml配置了MongoDB参数,但MongoDB未安装,或者MongoDB安装不正确。

根据实际需要,如果仅是用来测试一些功能,不需要MongoDB配置的话,去掉library.xml中MongoDB配置参数,然后重启服务器,内务就可以正常访问服务器了。

如果要使用MongoDB相关的功能,需要先安装MongoDB软件,然后再在dp2服务器上进行配置成Windows Service(通过菜单 ),最后在library.xml配置MongoDB参数(通过菜单


如果删除MongoDB服务? 如果MongoDB服务启动不了,例如在计算机管理下查看MongoDB服务未启动,点启动也不成功,说明这个服务安装有问题。 可能在命令行工具,使用SC delete "MongoDB" 删除MongoDB服务。

重新在dp2Library XE单机版安装mongodb为Windows Service服务后,单机版服务器访问MongoDB正常。


(有个问题还需要继续测试,在出现ERR002错误之后,dp2内务无法使用,但是没有经过任何修改,大概10分钟之后,有时候20分钟之后,dp2内务可以正常启动,正常使用。在这种情况下大概正常使用了3天,每次等待10几分钟后均正常,下一步需要测试关闭mongodb后,dp2在一段时间后,不再出现ERR002错误)

通过下面日志看到,首次初始化MongoDB如果访问不通,先报ERROR002错,后面再访问MongoDB访问不能时会报ERROR006时,报ERROR006后系统会解除 ERR002 挂起状态。

2018/8/29 20:45:11 *********
2018/8/29 20:45:11 library (3.4) application 开始初始化。
2018/8/29 20:45:11 INFO: 开始装载 C:\Users\pro\dp2LibraryXE_v1\library_data\library.xml 到 XMLDOM
2018/8/29 20:45:11 INFO: 初始化内存参数
2018/8/29 20:45:11 是否为调试态: False
2018/8/29 20:45:11 INFO: LoadReaderDbGroupParam
2018/8/29 20:45:11 INFO: LoadItemDbGroupParam
2018/8/29 20:45:11 INFO: InitialKdbs
2018/8/29 20:45:18 INFO: CheckKernelVersion
2018/8/29 20:45:18 INFO: InitialVdbs
2018/8/29 20:45:18 INFO: 临时 session 使用完毕
2018/8/29 20:45:18 INFO: OperLog.Initial
2018/8/29 20:45:18 INFO: Statis.Initial
2018/8/29 20:45:18 INFO: InitialLibraryHostAssembly
2018/8/29 20:45:18 INFO: InitialExternalMessageInterfaces
2018/8/29 20:45:18 INFO: Message Queue
2018/8/29 20:45:19 ERR002 首次初始化 mongodb database 失败: 初始化 MongoClient 时出错: Unable to connect to server 127.0.0.1:27017: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:27017.
2018/8/29 20:45:19 *** 当前系统已经被挂起 ERR002
2018/8/29 20:45:19 INFO: 准备下属数据库对象
2018/8/29 20:45:19 INFO: MessageCenter
2018/8/29 20:45:19 INFO: DefaultThread
2018/8/29 20:45:19 INFO: OperLogThread
2018/8/29 20:45:19 馆藏地结果集创建开始 
2018/8/29 20:45:20 INFO: ArriveMonitor
2018/8/29 20:45:20 馆藏地结果集创建结束 
2018/8/29 20:45:20 INFO: ReadersMonitor
2018/8/29 20:45:20 INFO: MessageMonitor
2018/8/29 20:45:20 INFO: RebuildKeys ReadBatchTaskBreakPointFile
2018/8/29 20:45:20 INFO: BackupTask ReadBatchTaskBreakPointFile
2018/8/29 20:45:20 INFO: UpgradeLibraryXml
2018/8/29 20:45:20 LibraryService 成功初始化。初始化操作耗费时间 8.6708767 秒
2018/8/29 20:45:20 INFO: BeginWatcher
2018/8/29 20:45:20 INFO: End BeginWatcher
2018/8/29 20:55:21 ERR006 初始化 mongodb database 失败: 初始化 MongoClient 时出错: Unable to connect to server 127.0.0.1:27017: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:27017.
2018/8/29 20:55:21 *** 系统已解除 ERR002 挂起状态
renyh commented 6 years ago

ERROR002与ERROR006问题汇报

首次开机 Windows 启动的时候,有可能 mongodb service 启动较慢,跟不上 dp2library 或者 dp2libraryxe 的节奏。这些都会造成 ERROR002。所以 dp2library 或者 dp2libraryxe 都会定时重试访问 mongodb

谢老师,您看步骤是这样的:首次初始化mongodb时连不上报ERROR002,dp2library被挂起。后面定时重试访问时连不上报ERROR006,当出现ERROR06时就解除了ERROR002 挂起状态,内务又可以正常访问服务器数据了。这样内务使用过程中可能会困惑:一开始系统挂起很多功能不能用,过一起又可以正常使用了。

感觉ERROR002与ERROR006虽然都是访问MongoDB不成功,但对系统影响的严重程序不一样。


谢:我看了一下代码,确实有问题,我修改了一下代码,dp2installer 和 dp2libraryxe 已经更新了。【需要安排针对这个问题的测试】

renyh commented 5 years ago

image