NebulaPool的maxConnSize设置成最大,高并发是getSession会出现取值是null的情况

NebulaPool的maxConnSize设置成最大:
NebulaPoolConfig nebulaPoolConfig = new NebulaPoolConfig();
nebulaPoolConfig.setMaxConnSize(Integer.MAX_VALUE);

高并发【10线程循环10万次】时getSession会出现取值是null的情况
Session session = nebPool.getSession(userName, passwd, true);
session出现null的情况

请问这种情况是需要修改NebulaGraph的什么配置?

你用的哪个版本的 javaClint?我使用的2.0.0版本实际使用和看源码是不会出现这个问题的,这个方法只会返回session或者抛异常。

1 个赞

是这个版本。我处理了异常后,返回NULL。这种获取异常怎么处理?需要调整nebula的什么配置吗

你的代码自己初始化的session是null,然后异常的时候就打个日志,然后对外返回null,你要看异常是什么错误信息,是不是服务连接失败,或者用户名密码不对,或者你并发的线程数大于池的连接数,都会抛异常

NebulaPool的最大连接数设置的是Integer.MAX_VALUE
用户名/密码不会错(成功获取Session是绝大多数的情况)

所以我想是不是nebula-client的客户端配置是不是有最大限制,如果有这种限制,应该怎么修改?

你直接把抛出的异常打印截图出来吧,不要让我来猜

异常如图

你在服务端所在机子执行 ulimit -n 截图,还有。贴下graphd的info日志。

image
graphed的日志被淹没了,文件find不到No extra的错误日志

你的ulimit -n 出来就是10万多点,然后你的连接创建10万多,服务端都没有句柄可以用了,你们为什么需要这么多连接呀,假如要这么多连接,你需要改服务端配置,让limit变大。

graphed的日志被淹没了,文件find不到No extra的错误日志

日志怎么就淹没了,还有 No extra 不是在服务端打印的,是客户端自己的错误信息。

好的,我尝试改一下ulimit限制

该话题在最后一个回复创建后7天后自动关闭。不再允许新的回复。