【问题标题】:cannot start cassandra. Fail setting ulimit无法启动 cassandra。设置ulimit失败
【发布时间】:2015-10-06 00:47:14
【问题描述】:

我安装了 cassandra 并尝试启动服务,但遇到以下错误。我可以知道我应该改变什么价值吗?感谢您的宝贵时间。

#service dse start
Starting DSE daemon : dse
DSE daemon starting with just Cassandra enabled (edit /etc/default/dse to enable)
Fail setting `ulimit '-p' '8'`: /etc/init.d/dse: line 430: ulimit: pipe size: cannot modify limit: Invalid argument

 /etc/init.d/dse file contains below info

copy_limits(){
    # Use CASSANDRA_USER as a default argument
    local user=${1:-${CASSANDRA_USER}}

    # Since /bin/sh has a limited `ulimit` and `prlimit` from 'utils-linux' is
    #   not well spread, we use `for` as an alternative
    local c
    for p in -t -f -d -s -c -m -l -p -n; do
        local v="$( su - "$user" -s /bin/sh -c "ulimit $p" 2>/dev/null )"
==>line 430 in error ***** :       ulimit $p $v 2>&1 | \
            while read err; do
                log_message "Fail setting \`ulimit '$p' '$v'\`: $err"
            done
    done
}

【问题讨论】:

  • 您是否查看过this doc,尤其是关于用户限制的部分?推荐的设置是:“打包安装:确保以下设置包含在 /etc/security/limits.d/cassandra.conf 文件中:cassandra - memlock unlimited cassandra - nofile 100000 cassandra - nproc 32768 cassandra - as unlimited”
  • 嗨,是的,我检查了它们,发现它们存在于文件中。仍然当我开始时,我得到了这个错误。在我需要修复设置的其他地方有什么帮助吗?谢谢

标签: cassandra datastax


【解决方案1】:

无论错误消息如何,节点都应该是UP。您可以通过运行sudo service dse statusnodetool ring 来验证这一点。

如果这没有帮助,解决方法是编辑 /etc/init.d/dse 并删除您在错误消息中看到的 for 循环中的 -p 标志(for p in -t -f -d -s -c -m -l -n; do)

【讨论】:

  • 删除 -p 标志效果很好。非常感谢。您能否也分享一些关于它造成了什么问题以及如何消除它的信息?再次感谢我坚持了很长时间。
  • 错误消息Fail setting ulimit '-p' '8': /etc/init.d/dse: line 430: ulimit: pipe size: cannot modify limit: Invalid argument 表示您使用的操作系统不支持ulimit -p,因此将其从脚本中删除为您解决了问题。该问题也应该在下一个 DSE 补丁版本中得到修复。
猜你喜欢
  • 2013-04-01
  • 2014-04-08
  • 2021-02-25
  • 2017-11-21
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多