You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行Redis make test报错:主从同步测试失败(Ubuntu16+Apache环境)

解决Ubuntu 16 + Apache环境下Redis make test replication-psync.tcl测试失败的问题

我之前在Ubuntu 16搭配Apache的环境里编译Redis后跑make test时,也碰到过一模一样的报错——就是tests/integration/replication-psync.tcl里的「Slave should be able to synchronize with the master」测试用例挂了,最终导致整个test目标失败。下面是我亲测有效的几个解决办法,你可以挨个试试:

  • 补全测试依赖包
    Redis的测试用例依赖Tcl环境,Ubuntu 16默认的Tcl版本可能不够或者没装全。执行下面的命令安装所需依赖:

    sudo apt-get update
    sudo apt-get install tcl8.5 build-essential
    

    安装完成后,重新回到Redis源码目录,再跑make test试试。

  • 检查端口占用情况
    Redis测试过程中会启动多个Redis实例,大概率会用到6379、6380这类默认端口。如果Apache或者其他服务刚好占用了这些端口,就会导致主从同步测试失败。执行下面的命令排查端口占用:

    sudo netstat -tulpn | grep -E '6379|6380'
    

    如果发现有进程占用这些端口,可以先临时停止对应的服务(比如Apache用sudo service apache2 stop),等测试跑完再启动回来。

  • 重新编译Redis并清理缓存
    有时候编译过程中生成的缓存文件可能会导致奇怪的问题,先彻底清理之前的编译产物,再重新编译:

    make distclean
    make
    

    编译完成后再执行make test,大概率能解决一些隐性的编译问题。

  • 调整系统资源限制
    Ubuntu 16默认的文件描述符限制比较低,而Redis测试会创建大量的文件和套接字,资源不足也会导致测试失败。先临时调高限制:

    ulimit -n 10240
    

    然后在当前shell窗口重新跑make test。如果想永久生效,可以编辑/etc/security/limits.conf文件,添加以下内容:

    * soft nofile 10240
    * hard nofile 10240
    

    保存后重启系统或者重新登录就能生效。

如果上面的方法都试过还是不行,你可以试试跑make test V=1,这个命令会输出更详细的测试日志,能帮你定位到更具体的失败原因。

内容的提问来源于stack exchange,提问作者Aaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:15:45