解開CentOs 利用systemd 起service 的 ulimit 資源限制

Yen-Ying Lee
1 min readMay 17, 2020

最近在公司利用Airflow 起Spark Job 時,出現 too many open file的 error。心中第一個直覺就是設定在執行job的service account的ulimit nofile

# /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536

結果發現Spark Job的 ulimit -n 的值仍然是1024,看來還有其他的設定限制住了。後來想到會不會是systemd 的自身限制,便下了

$ systemctl show <your_service_name>

查詢service 的設定,發現上面果然有一個NOFILE的設定,而且正好是值是1024!

有了方向,解決問題就簡單多了,只須要在起 Airflow 的 service file 加上下面的設定

[Service]
LimitNOFILE=65536

就解決了,Spark Job 就再也沒有出現 too many open file 的Error了。

如果你喜歡這篇文章,

或是覺得這篇文章對你有幫助,

可以給我一些掌聲做為鼓勵 :)

--

--