SyncY多任务多线程版发布(v2.0.0)

SyncY v2版正式发布了,相比v1版本变化很大,可以支持多任务、多线程,同时可以设定限速时间段。多线程大家都很了解,pc上的下载程序都支持,不多说,让大家赶快来体验能在路由上运行的多任务多线程同步软件。

V2版程序新增3个配置项(speedlimitperiod、tasknumber、threadnumber):

speedlimitperiod:限速时间段,在此时间内按照设定设置的最大上传或下载速度限速,设置格式与运行时间段相同,默认值为0-0,表示不限速;
tasknumber:同时同步的任务数,即同时上传或下载的文件个数,默认值为2,最小值为1;
threadnumber:每个任务的线程数,该设置值表示每个任务的最大线程数,默认值为2,最小值为1.

v2版内存耗用比v1版大很多,根据我观察看,每增加一个线程需要耗用2M左右的内存,默认情况下(2任务2线程)有2个下载任务在运行时,内存耗用在20M左右(同步文件数量大且开启同步信息缓存时内存耗用还会增加),32M内存的路由跑起来压力很大,64M及以上的应该没什么问题。

下载地址:http://www.syncy.cn/index.php/download/

配置文件说明:http://www.syncy.cn/index.php/syncyconfighelp/

SyncY多任务多线程版发布(v2.0.0)》上有7条评论

  1. Metre

    我的启动没几下就会停了…
    错误日志也没有
    手动运行

    root@OpenWrt:/data/syncy# syncy.py
    2015-01-11 13:21:53 PCS quota is 2155G,used 70G.
    2015-01-11 13:21:53 Start sync path: “/data/syncy/media:media:download”.
    Segmentation fault

    回复
  2. Metre

    每个任务的线程数 填 2 就没有问题 填多了就会出现 Segmentation fault

    回复
    1. WishInLife 文章作者

      不知道你是不是在路由上运行,如果不是你可以升级下python到最新的2.7.9版,如果是在路由上,总线程数不要设置的太多,占用太多的资源会被系统kill的,出现Segmentation fault错误很可能就是被系统干掉了,查了下大多是因为访问内存越界造成的,但对于python脚本来说不直接访问内存,应该不存在越界的问题。
      还有一个可能就是你的系统设置的堆栈太小了,可以用ulimit -a查看堆栈大小,下面是我路由上的信息(我开2任务,每任务4线程,没有问题):
      root@Router:/u01/log# ulimit -a
      -f: file size (blocks) unlimited
      -t: cpu time (seconds) unlimited
      -d: data seg size (kb) unlimited
      -s: stack size (kb) 8192
      -c: core file size (blocks) 0
      -m: resident set size (kb) unlimited
      -l: locked memory (kb) 64
      -p: processes 988
      -n: file descriptors 1024
      -v: address space (kb) unlimited
      -w: locks unlimited
      -e: scheduling priority 0
      -r: real-time priority 0
      如果你的堆栈较小,可以用命令ulimit -s来调大点。

      回复
      1. Metre

        非常感谢回复 我是在路由器上运行的 openwrt x86

        root@OpenWrt:~# ulimit -a
        -f: file size (blocks) unlimited
        -t: cpu time (seconds) unlimited
        -d: data seg size (kb) unlimited
        -s: stack size (kb) 8192
        -c: core file size (blocks) 0
        -m: resident set size (kb) unlimited
        -l: locked memory (kb) 64
        -p: processes 3940
        -n: file descriptors 1024
        -v: address space (kb) unlimited
        -w: locks unlimited
        -e: scheduling priority 0
        -r: real-time priority 0

        回复
        1. WishInLife 文章作者

          那不知道你的内存多大,会不会是线程开多了,占用内存多被系统kill了。

          回复
          1. WishInLife 文章作者

            找到错误原因了,是libcurl的dns解析和ssl访问非线程安全,开多线程会容易导致segmentation fault,有一个参数设置上就可以,我再试两天,没问题就发个更新。设置上那个参数影响是不能正常反馈dns解析不了的错误,dns解析不了的时候应该是极其少的。
            并且现在优化了下,内存占用比原来少了很多,线程开的越多节省的越多,我开2任务,各4线程,只占用11M+的内存,之前要占用30M左右的内存。

发表评论

电子邮件地址不会被公开。 必填项已用*标注