資源暫時不可用(Resource temporarily unavailable)

   大早Hadoop的NameNode沒法用hadoop用戶登陸,ssh –vvv 提示遠程無Session資源。bash

   用root登陸進去查看hadoop用戶的資源信息:服務器

# su -m -c 'ulimit -a' hadoop
su: 沒法設置用戶ID: 資源暫時不可用多線程

    按經驗看就是hadoop用戶開了太多線程,達到系統最大限制(默認1024)ssh

# ps –eL | wc -l
2219ide

    總線程數超過1024,有多是線程滿的問題。不過這臺服務器已經調整過用戶線程限制了,爲什麼還會出現這個問題呢?oop

    用戶環境變量,/etc/profile.d/ulimit.sh :線程

#!/bin/bash
[ "$(id -u)" == "0" ] && ulimit -n 1048576
ulimit -u 10000hadoop

    系統限制配置,/etc/security/limits.conf:ci

* soft nproc 10000
* hard nproc 10000
* soft nofile 1048576
* hard nofile 1048576資源

    驗證一下,結果仍是設置無效:

# su -m -c 'ulimit -u' nobody
1024

   最後肯定是因爲CentOS 6.4版本新增了限制配置 /etc/security/limits.d/90-nproc.conf ,以保證root用戶無限制。此配置會覆蓋主配置文件的設定:

# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

*          soft    nproc     1024
root       soft    nproc     unlimited

    OK,問題就此定位!

    解決辦法:刪除 /etc/security/limits.d/90-nproc.conf 文件中1024那一行。

    注意:不推薦刪除此文件,一方面root無限制的配置丟了;另外一方面若是此配置文件不存在,執行系統升級時可能又被寫入;文件存在時,升級系統時,即便此文件須要更新,也不會被覆蓋而是生成 90-nproc.conf.rpmnew。

相關文章
相關標籤/搜索