systemd에서 리소스 관리가 어떻게 작동하는지 알아보려고 합니다.
내가 어디에 있는지, 어떻게 거기에 도달했는지 파악하려면 먼저 내 상황을 설명해야 합니다.
mysql-db를 ubuntu 14.04에서 16.04로 마이그레이션한 후 systemd를 처리해야 합니다. 이번이 처음도 아니고 지금까지도 괜찮습니다. 16.04에서 mysql을 시작하는 동안 다음 로그 항목을 발견했습니다.
Changed limits: max_open_files: 1024 (requested 5000)
mysql 변수 max_open_files
( max_open_files
현재 구성에 설정되지 않음!)가 동적이며 4가지 시나리오에 따라 달라지는 것을 발견했습니다(참조:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_open_files_limit) 제가 보기엔 장면이 없는 게 분명해요. 4를 사용합니다.
ulimit
그래서 내 요점은: 14.04와 16.04의 mysql-config는 동일하지만 systemd의 리소스 관리 동작이 14.04( & 사용)와 다른 것처럼 보입니다. /etc/security.d/limits.conf
mysql 사용 시나리오 4, '운영 체제 제한이 무한인 경우'는 사실입니다. ..왜운영체제의 한계는 무한한가?
제가 고심하고 있는 또 다른 문제: max_open_files
mysql-config에서 "1000"으로 정의하고 보면 /proc/[myslq-pid]/limits
소프트 제한이 1000으로 설정되어 있고 하드 제한이 4096으로 설정되어 있는 것을 알 수 있습니다.
질문 1: 위의 조건 4가 "운영 체제 제한이 무한대인 경우"에 적용되므로 제한이 4096인 이유는...
max_open_files
1에서 4096 사이의 값으로 설정할 수 있으며 이는 제한을 정의합니다. 이는 예상되는 동작입니다. 그러나 4096보다 높게 설정되면 Softlimit=1024 및 hardlimit=4096으로 대체됩니다. 위의 조건 4가 다시 충족되기 때문에 이 동작을 이해하지 못합니다 if operating system limit is Infinity
.
이것은 나의질문 2:이 "기본값"은 어디에서 왔습니까? 한도를 4096보다 높게 설정할 수 없는 이유는 무엇입니까?
노트: LimitNOFILE=number
systemd의 mysql-service-unit에 한번 정의해 놓으면 "number"가 소프트 리미트와 하드 리미트로 설정되어 4096보다 큰 값을 정의할 수 있었습니다. 다시 확인 하여 확인하세요 /proc/[myslq-pid]/limits
.
나는 systemd에 대한 문서를 보았지만 어떤 이유로 "기본값"이라는 측면에서 유일하게 언급된 것은 기본적으로 설정되지 않은 정의할 수 있는 파일 /etc/systemd/system.conf
입니다 . 그래서 거기에 있습니까 ??/etc/systemd/user.conf
DefaultLimitNOFILE=
default Default
저는 이 동작을 정말로 지지하지 않습니다. 누군가 이 문제를 해결하는 방법에 대한 힌트를 제공할 수 있기를 바랍니다.
나는 당신이 가질 수 있는 어떤 제안이나 힌트에도 열려있습니다!
나는 이것을 설명하기 위해 더 많은 문서를 읽고 싶습니다. 그러나 올바른 문서를 찾지 못했습니다... 내가 찾은 모든 것이 나를 다시 돌아오게 합니다.systemd.resourcecontrol,한도 설정,시스템 실행 프로그램그리고systemd/ControlGroup 인터페이스이것은 여기서 끝나는 것보다 더 이상 나에게 도움이 되지 않습니다 :)