我写的scala应用程序使用了很多Kyotocabinet的Db文件(我需要一次打开500-3k小kyotocabinet文件)。
但512打开(创建)的数据库文件后,我有一个错误“错误:成功:没有错误”,并没有创建新的数据库文件。
谷歌搜索后,我发现在这里与东京内阁+ Java类似的问题:https://groups.google.com/forum/#!msg/tokyocabinet-users/ve6OsRm_hyU/hXC7795iqPsJ但没有解决方案。
那么交易是什么?我如何在一个应用程序中打开更多kyotocabinet文件?可能是Kyotocabinet有一些错误?Kyotocabinet和Scala(Java):数据库文件的限制是否打开?
0
A
回答
1
好,似乎,我发现我的问题的答案...
这不是Java或斯卡拉特定的问题,而是Kyotocabinet
首先,我尝试重现另一种语言这种行为。所以,我使用Perl所著的测试程序,它也失败,但随着更多信息的消息:pthread_key_create
之后得到的来源:
终止扔“的std :: runtime_error”
什么()的一个实例后调用kyotocabinet并研究了为每个京瓷File()对象创建的特殊TSDKey对象,并且此对象创建了pthread_key。默认情况下,一个 进程可以创建有限数量的此键,并且此数字在PTHREAD_KEYS_MAX中定义。
如此看来,在一个进程中打开超过512页分贝京都的文件是不可能的:(
0
是的,我做了一个尝试,提高宏观PTHREAD_KEYS_MAX的值会解决这个问题。
我使用Ubuntu 16.04,与libc的版本2.23。pthread是在libc中的一个插件。
修改从宏观PTHREAD_KEYS_MAX 1024到2048.不要太大。我试过10240,但测试程序崩溃。
修改系统包含文件local_lim.h中的maxcro值,并用新版本替换系统库。
重建kyotocabinet。
将libkyotocabinet.so和libpthread.so.0复制到您的测试程序路径中。
出口LD_LIBRARY_PATH =/
执行测试计划。最大数据库文件的数量增加了一倍。
相关问题
- 1. Java中打开文件的数量是否有实际限制?
- 2. BerkeleyDB数据库文件打开(java)
- 3. OS X上是否存在Java特定的打开文件限制?
- 4. 德比数据库是否有限制
- 5. 无法打开数据库“test.sql”:无法打开xcode中的数据库文件
- 6. DatabaseError无法打开数据库文件
- 7. 无法打开数据库文件 - sqlite3?
- 8. sqlite3_open:“无法打开数据库文件”
- 9. sqlite3 - 无法打开数据库文件
- 10. OperationalError:无法打开数据库文件
- 11. 无法打开数据库文件
- 12. SQLiteException:无法打开数据库文件
- 13. SQLiteException:无法打开数据库文件
- 14. 无法打开sqlite数据库文件
- 15. 是否可以打开的窗口数量有限制?
- 16. Dropbox是否有文件数限制?
- 17. nodejs/Mac并打开文件限制
- 18. SIPP:打开文件限制> FD_SETSIZE
- 19. SQLite java错误“无法打开数据库文件”
- 20. Android数据库错误(android.database.sqlite.SQLiteCantOpenDatabaseException:无法打开数据库文件)
- 21. 如何限制MS Access数据库打开
- 22. 打开数据库时无法打开物理文件
- 23. 从数据库C打开二进制文件#
- 24. Cakephp:是否可以限制数据库连接的数量?
- 25. sqlite无法打开数据库文件被加密或不是数据库?
- 26. 打开文件和读取数据
- 27. SQL Server数据库和视图中的表的数量是否有限制?
- 28. 用scala打开windows上的文件source.fromFile()
- 29. Spark/Scala打开压缩的CSV文件
- 30. Oracle数据库不是他们“#”字符打开文件
您使用的是Linux吗?你有没有尝试增加ulimit? –
是的,我尝试在控制台中设置ulimit -n 8192,然后运行sbt中的测试代码,但没有任何效果...我也想到了mmap,京都人为每个打开的文件使用,尝试在打开文件时减少msiz = param,但这没有帮助 –
为什么你需要多次打开数据库?只需在程序启动时打开它,并在完成时关闭它。 – SnakeDoc