CouchDB意外终止

Pet*_*ong 6 crash couchdb couchbase loveseat

今天我写了一个性能测试程序来插入数据并向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. 
Run Code Online (Sandbox Code Playgroud)

Pet*_*ong 2

最终结论:

couchbase 1.02 不支持Windows 2003 32 位机器上大于 4GB 的数据文件。

couchbase 2.0 开发者预审版本支持在 Windows 2003 32 位机器上大于 4GB 的数据文件。但据我所知,2.0 版本比 1.02 版本至少慢 5 倍

此链接 中的 couchdb 1.1支持Windows 2003 32 位计算机上大于 4GB 的文件。但它和 couchbase 2.0 一样慢。

Couchdb在 Windows 上太慢了(至少在我的用户案例中它很慢)。最后我尝试使用mysql来存储文件。Mysql 竟然快了 8 倍!将附件插入 couchdb 需要 650 毫秒,而 mysql 只需 80 毫秒。