我们的服务侦听队列,并使用java客户端将事件保存在发布给它的Marklogic-v8.0.6中。
持久性代码以这种方式工作:
client.getConnection(host,port,name,pswd,auth)
write content
client.release
当有大量事件说2000+时,只有前200 - 250持续存在
然后我们看到带有消息Too many open files
的异常,并且之后事件不会持久存在。
这是因为marklogic上有太多打开的连接,并且没有服务连接消耗。
marklogic中是否有可以使用的连接池概念?
答案 0 :(得分:3)
客户端对象封装了连接池。
为每个请求创建一个新客户端是非常低效的。
建议的使用模式是为数据库和角色的组合打开一个客户端,并继续使用该客户端来访问具有该角色的数据库。
数据库客户端和管理器在配置后是线程安全的,因此多个线程可以使用相同的数据库客户端。
如果您发现需要的并发请求多于默认请求,则有一些方法可以调整它,但第一步是将数据库客户端视为数据库和角色组合的单例。
希望有帮助,