今天我编写了一个性能测试程序,用于插入数据并向couchdb添加附件。服务器软件是couchbase(这是couchdb的包装),操作系统是Windows 2003服务器。该程序是用C#开发的,couchdb驱动程序是LoveSeat(它封装了一些http方法来处理couchdb)。数据非常简单,但附件不小,每个约70kb。有大约200个附件,我反复附加它们。我在客户端程序中启动了5个线程。
在couchdb服务器意外终止之前,一切看起来都很好。实际上这不是第一次崩溃。起初我以为是因为客户端程序。但最后我发现couchdb崩溃了。我不认为这是因为数据或附件。因为我插入相同的数据并重复添加相同的附件。该程序运行大约一个小时没有问题,直到它崩溃。
[Tue, 05 Jul 2011 11:00:19 GMT] [info] [<0.142.0>] 192.168.1.135 - - 'GET' /test/67366 200
[Tue, 05 Jul 2011 11:00:19 GMT] [info] [<0.108.0>] 192.168.1.135 - - 'GET' /test/7136 200
[Tue, 05 Jul 2011 11:00:19 GMT] [info] [<0.108.0>] 192.168.1.135 - - 'GET' /test/47306 200
[Tue, 05 Jul 2011 11:00:19 GMT] [info] [<0.108.0>] 192.168.1.135 - - 'GET' /test/27257 200
[Tue, 05 Jul 2011 11:00:19 GMT] [info] [<0.108.0>] 192.168.1.135 - - 'PUT' /test/7136/f?rev=1-334efd144dcdc52fd3a3a981dce4472f 201
[Tue, 05 Jul 2011 11:00:25 GMT] [error] [<0.145.0>] ** Generic server <0.145.0> terminating
** Last message in was {pread_iolist,4294342003}
** When Server state == {file,{file_descriptor,prim_file,{#Port<0.3143>,1464}},
0,4295164786}
** Reason for termination ==
** {{badmatch,{ok,<<183,92,29,219,169,127,153,2,50,217,252,186,178,175,202,
144,215,209,191,69,109,230,227,154,114,174,173,157,231,
153,246,124,105,239,174,51,143,24,108,175,101,215,175,
221,35,99,53,124,108,109,249,112,202,29,85,87,81,176,94,
219,11,103,129,231,25,111,242,108,246,207,107,72,173,172,
57,246,195,16,236,79,243,134,211,93,131,218,180,93,240,
173,213,199,226,175,176,217,250,154,89,39,237,157,250,77,
173,151,156,139,248,106,85,21,134,253,85,234,108,85,208,
67,177,130,124,247,161,98,77,173,126,170,111,80,84,45,
212,201,72,149,90,138,252,89,23,85,165,252,105,187,191,
41,86,125,148,106,149,175,252,78,185,198,154,207,172,142,
148,101,83,140,99,222,102,26,41,131,206,132,221,31,74,3,
172,176,158,236,136,71,120,169,63,35,161,251,208,86,202,
1,95,208,25,51,76,250,100,182,177,122,31,91,230,249,214,
245,229,250,212,118,86,167,120,116,6,173,78,113,18,171,
143,215,191,38,207,51,92,150,10,10,83,164,98,154,181,157,
......... a loooooot of numbers.
答案 0 :(得分:2)
我很抱歉你有这个错误。我可以建议在Couchbase论坛上发布这个问题吗?我们的支持人员正在比SO更密切地监控这些人:http://www.couchbase.org/forums/
答案 1 :(得分:2)
我想我找到了原因。文件大小达到4GB。但根据this wiki page,Erlang / OTP发布R14B01不再存在此错误。所以我认为couchbase使用了R14B01之前的嵌入式 erlang / otp版本。 (我还在机器上安装了独立的Erlang / OTP R14B03,但似乎没有使用它)
答案 2 :(得分:2)
最终结论:
couchbase 1.02在Windows 2003 32位计算机上 NOT 支持大于4GB的数据文件。
couchbase 2.0开发人员预览版 DOES 支持Windows 2003 32位计算机上大于4GB的数据文件。但据我所知,版本2.0至少比版本1.02 <强>慢5倍。
couchdb 1.1来自this link DOES 支持Windows 2003 32位计算机上大于4GB的文件。但它与couchbase 2.0一样慢。
Couchdb在Windows上 tooooo slow (至少在我的用户案例中它很慢)。最后,我尝试使用mysql来存储文件。 Mysql竟然快了8倍!将附件插入couchdb需要650毫秒,而mysql的数量只需80毫秒。