首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共同内阁和Scala(Java):DB文件打开的限制?

共同内阁和Scala(Java):DB文件打开的限制?
EN

Stack Overflow用户
提问于 2014-02-25 18:47:24
回答 2查看 268关注 0票数 0

我编写了scala应用程序,它使用了大量的Kyotocabinet文件(我需要一次打开500-3k的小kyotocabinet文件)。

但是,在512打开(创建) db文件后,我有一个错误" error :success: no error",并且没有创建新的db文件。

在谷歌搜索后,我发现东京内阁+ Java也有类似的问题:hyU/hXC7795iqPsJ,但没有解决方案。

那是怎么回事?如何在一个应用程序中打开更多的kyotocabinet文件?共同内阁里可能有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-25 22:42:55

看来我找到了问题的答案..。

这不是Java或Scala的具体问题,而是共同内阁

首先,我试图用另一种语言再现这种行为。因此,我编写了使用Perl的测试程序,它也失败了,但是提供了更多的信息:

在引发“std::runtime_error”实例后调用终止

what():pthread_key_create

在此基础上,得到了kyoto的来源,并研究了每一个京都文件()对象创建的特殊TSDKey对象,并且这个对象创建了pthread_key。默认情况下,一个进程可以创建这个键的有限数量,这个数目是在PTHREAD_KEYS_MAX中定义的。

因此,似乎不可能在一个进程中打开超过512个京都db文件:

票数 1
EN

Stack Overflow用户

发布于 2017-09-27 11:14:19

是的,我试过了。提高宏PTHREAD_KEYS_MAX的价值将解决这个问题。

我使用的是Ubuntu16.04,libc版本为2.23。Libp线程是libc的加载项。

  1. http://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.bz2下载源代码。
  2. 将宏PTHREAD_KEYS_MAX从1024修改为2048。别太大了。我试过10240次,但是测试程序崩溃了。
  3. 修改系统中的maxcro值,包括文件local_lim.h,并用新版本替换系统库。
  4. 重建甘露柜。
  5. 将libkyotocabinet.so和libp线程.so.0复制到您的测试程序路径。
  6. 导出LD_LIBRARY_PATH=./
  7. 执行你的测试程序。最大db文件的数量翻了一番。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22023419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档