留言

在这里填写留言和我交流.

SSDB 相关的问题, 建议提在这里: http://www.ideawu.net/blog/ssdb, 就是本页顶部菜单的"SSDB"链接.

Views: 132666

581 Responses to "留言"

  • 您好,测试一百万次写入,数据文件是34M,然后一百万次删除之前写入的数据,发现数据文件没有变小,反而变大了,是不是每次读写删除都记录log?这样会浪费好多硬盘空间的。求指导。谢谢 Reply
    @xxxd: 没错, 这正是 ssdb(leveldb) 的工作方式, 当 log 达到一定程度后, 会被自动清理, 不用担心. Reply
  • 博主你好:
    我想请问,ssdb是否具有在建立连接的时候验证密钥的功能?因为我们现在的ssdb服务器因为某些原因不得已要使用公网地址,这样的话相当于直接对外开放了,所以想请问,有没有像redis一样,能够在建立连接的时候进行一种密钥的方式验证!我在ssdb使用中未找到。 Reply
    @lb: Hi, SSDB 目前没有提供账号密码验证方式. 目前推荐的使用方式是依赖操作系统或者网络本身进行物理上的安全保证, 如 iptable. 即使是提供账号密码的方式, 安全方面要做的工作还有很多. Reply
  • https://github.com/ideawu/webrtc-demo/blob/master/src/audio_device.cpp

    你好,从上面的代码找到这里,想请教一个问题:
    就是上面的Demo的AEC部分被注释掉了,被注释掉的部分是否正确?如果去掉这些注释,可以正确有效的开启AEC功能吗?

    谢谢! Reply
  • 楼主你好:
    想请问你现在双主已经运用到实际生产环境了么?
    还有就是双主跟主从有什么区别(我发现ssdb下的slave也是可以进行写操作的)。双主配置也会在每次写操作后同步更新另外一个主的数据么?他们是存的一份数据(镜像),还是真实的两份数据? Reply
    @lb: 双主的意思, 就是两个实例的数据是相同的, 互为镜像. 主从结构的slave也可以写入, 但未来可能会改变为不可写入, 而且在slave上的写操作, 不会被同步到master上. 我们的生产环境已经有在应用双主结构了. Reply
  • 博主你好,请问一下zscan命令,想取全部数据的话,limit怎么表示所有?有没有类似redis的+inf? Reply
    @whl: Hi, 不建议一次取全部数据, 而是一次取一部分, 比如1千或者1万个. 可以参考这篇日志: http://www.ideawu.net/blog/archives/721.html Reply
    @ideawu: 取全部简单嘛,难道要先获取zsize。。redis的-inf和+inf分别表示上下限,ssdb为什么没考虑加上类似的呢? Reply
    @whl: 如果你想一次取全部的内容, 可以指定一个非常大的limit, 不超过 21 亿. Reply
  • 楼主,您好,请问你,ssdb的主从同步的时候,是master没收到一个写或更新操作立即就会通知到slave做相应的改变么?还是会等一段时间呢?我在测试的时候发现并不是立即马上同步过去的? Reply
    @lb: Hi, 你们现在使用 ssdb 的情况怎么样? 能否分享一下? Reply
    @lb: 是会立即同步, 网络好的情况一般几十毫秒. 你们的测试是怎么进行的? 在空的master-slave也是这样的问题吗? Reply
    @ideawu: 嗯 我们当时测试的并发有点高 不过现在这个应该不是问题了 我们会只在master上进行这个操作 所以这个问题不存在了 谢谢 Reply
    @lb: 那就好. 应该是测试时并发写太多, 导致同步出现延时. Reply
  • slave同步master的工作模式是先接收master的Binlog,根据Binlog的记录操作一遍slave么? Master的Binlog是只保存了当前内存数据的cmd还是所有数据的cmd哇?如果只保存了内存数据的cmd,怎么样才能同步下来所有Master上面的数据 Reply
    @arvin: 从1.5.6版本起, slave会同步master binlog中的数据, 以及所有老数据, 相当于完全dump一份和master一模一样的数据. Reply
    @ideawu: hi,1.5.6版本能够实现完全数据同步。最后还有个问题想请教,是否双master与主从设置是同样的,当启动一个新的master,陪置为mirror,会去将mirror指向的那个master中的所有数据都同步过来? Reply
    @lb: 是的, 双主也会将对方的数据完全同步. Reply
  • 您好:刚才我们在测试主从同步的时候发现,我们新启动一个slave连上一个已经运行过一段时间,存有较多数据;但是当启动完新的slave后发现只同步了一部分数据过来,还有相当的大部分数据没有同步过来。通过观察发现同步过来的这部分master数据,貌似都是刚刚读写过的,所以想问难道是只同步了再master内存中的数据么?(我用的是1.5.4版本) Reply
    @lb: 你好, 已经查明这是bug, 刚在1.5.6版本中修复了. Reply
    @lb: hi, 这个slave是在一个全新的目录吗? 如果不是, 需要手动删除它在meta目录. Reply
    @ideawu:环境是这样的,master是在一台机子上run,新启动的slave是另外一台机子上,所以是一个全新的目录。 Reply
    @lb: 这种情况从未见过. 如果你们方便的话, 将log_level设为debug, 然后启动一个全新的slave连接, 看一下log. Reply
    @ideawu: hi,我们实验了,新启动一个slave,去同步另外一台机子上的master,配置文件也安装你github上的写法:
    master的配置:

    # ssdb-server config

    # relative to path of this file, must exist
    work_dir = ./var
    pidfile = ./var/master_ssdb.pid

    server:
    ip: 192.168.1.85
    port: 8888

    replication:
    slaveof:
    # sync|mirror, default is sync

    logger:
    level: warn
    output: log.txt
    rotate:
    size: 1000000000

    leveldb:
    # in MB
    cache_size: 500
    # in KB
    block_size: 32
    # in MB
    write_buffer_size: 64
    # in MB
    compaction_speed: 100

    slave的配置:
    # ssdb-server config

    # relative to path of this file, must exist
    work_dir = ./var_slave85
    pidfile = ./var_slave85/ssdb_slave85.pid

    server:
    ip: 192.168.1.80
    port: 8890

    replication:
    slaveof:
    ip: 192.168.1.85
    port: 8888

    logger:
    level: debug
    output: log_slave.txt
    rotate:
    size: 1000000000

    leveldb:
    # in MB
    cache_size: 500
    # in KB
    block_size: 32
    # in MB
    write_buffer_size: 64
    # in MB
    compaction_speed: 100
    但是最后发现还是只同步了一部分数据过来,日志级别也设为debug了,通过日志也发现很对在master中的数据没有同步过来。还是怀疑是不是只同步了master中内存的数据呢? Reply
  • 你好,想请问您两个关于ssdb的问题
    1.假如一个机子有两个硬盘,如果在这个机器上布置两个ssdb实例,那么他们对对硬盘的读写是随机的还是一个实例一个?或者能不能指定一个实例往一个固定的硬盘里面读写数据?
    2.ssdb中的cache的淘汰机制是什么,是按照一个key的生命时间淘汰,还是按照先入先出的方式淘汰? Reply
    @lb: 你好,

    1. 完全可以做到两个实例读写不同的硬盘, 只需要修改配置文件中的 work_dir 指向不同硬盘上的目录即可.

    2. ssdb 没有key的淘汰机制. Reply
    @ideawu: 哦哦,第一个问题明白了。第二个问题还想问的是,在读cache中设置的大小是500M,那么这里面的数据是当达到500M后才会淘汰以前的,曾加新读到的数据内容到读cache中么?

    还有个问题是,我们现在在测试ssdb大并发的情况下出现这个问题,老是Connection reset,是我们自己实现的连接池,在ssdb服务端的log.txt 报这个错误“link.cpp(282): bad format”“ssdb-server.cpp(199): fd: 18, link parse error, delete link”,请问这个问题是什么原因呢?

    最后想问下,现在的双主稳定么,可以用在实际生产环境中么?
    谢谢了 Reply
    @lb: 你们是否是多线程操作同一个link了? link不是多线程安全的, 需要使用者加锁.

    双主构架已经是稳定的, 我们也在生产环境使用. 但是, 使用时要注意, 不要同时在两台主上操作同一个map/zset. Reply
    @ideawu: 您好,还有个问题想请教:如果在实际生产环境中,添加slave,那么在不宕机的情况下,怎样将master上的数据完全同步过来呢? Reply
    @lb: 配置好slave之后, 然后启动. master上的数据会自动完全同步过来的.
  • 请问ssdb的java客户端有没有提供一个连接池的管理接口?想在使用的时候对ssdb的连接应该都是由连接池来管理的,就像redis客户端jedis中的jedispool一样? Reply

« [6][7][8][9][10][11][12][13][14] » 10/28

Leave a Comment