Fehlerbehebung - Wert für 'TaskMax' ist zu niedrig
Die Db2® -Datenbank, die in einem systemd -Ausschnitt ausgeführt wird (normalerweise beim Start durch Db2 Fault Monitor), kann eine Verbindung möglicherweise aufgrund von pthread_create OSERR: EAGAIN (11)
nicht starten oder zurückweisen, wenn der Grenzwert für TasksMax zu niedrig eingestellt ist.
Umgebung
Linux -System mit systemd , wobei Db2 in einem systemd -Ausschnitt ausgeführt wird.
Problemdiagnose
Überprüfen Sie die Standardthreadbegrenzung für alle Services auf dem System:
$ systemctl show --property DefaultTasksMax
Symptom
Der Befehl db2start kann mit dem Fehlercode SQL1225N fehlschlagen und es wird eine entsprechende Nachricht in der Datei db2diag.log protokolliert.
2018-12-05-11.00.34.332127+060 I52280E490 LEVEL: Severe
PID : 11859 TID : 139906236016384 PROC : db2sysc 0
INSTANCE: db2v111 NODE : 000
HOSTNAME: db2host1
EDUID : 1 EDUNAME: db2sysc 0
FUNCTION: DB2 UDB, base sys utilities, sqeAgentServices::CreateIdleAgent, probe:110
RETCODE : ZRC=0xFFFFFB37=-1225
SQL1225N The request failed because an operating system process,
thread, or swap space limit was reached.
CALLED : OS, -, pthread_create OSERR: EAGAIN (11)
DATA #1 : Codepath, 8 bytes
5:10:25:35
Abhängig von den erzwungenen Grenzwerten werden Verbindungen übe einem bestimmten Schwellenwert mit dem Fehler SQL1225N zurückgewiesen, der an die Anwendung zurückgegeben wird, und ein weiterer Fehler wird von der Engine-Dispatchable-Unit (EDU) db2ipccm oder db2tcpcm in der Datei db2diag.log protokolliert.
2018-12-05-11.00.34.326462+060 E50682E470 LEVEL: Error (OS)
PID : 11859 TID : 139906236016384 PROC : db2sysc 0
INSTANCE: db2v111 NODE : 000
HOSTNAME: db2host1
EDUID : 1 EDUNAME: db2ipccm 0
FUNCTION: DB2 UDB, oper system services, sqloSpawnEDU, probe:80
MESSAGE : ZRC=0x8300000B=-2097151989
CALLED : OS, -, pthread_create OSERR: EAGAIN (11)
DATA #1 : Codepath, 8 bytes
5:10:25:35
Ursache
Die Db2 -Datenbank hat einen vom Betriebssystem erzwungenen Grenzwert, den ein bestimmter Prozess oder Benutzer erstellen kann. Die RLIMIT_NPROC wird für Rootinstanzen seit Db2 10.5.0.5automatisch überschrieben, sodass sie normalerweise nicht die eigentliche Ursache für EAGAIN-Fehler ist.
Unter Linux-Distributionen unter Verwendung von systemd (RedHat 7, SUSE 12) wurde eine zusätzliche Ebene der Ressourcenverwaltung mit der Bezeichnung "Slices" eingeführt, bei der eine Threadbegrenzung durch eine Variable TasksMax erzwungen werden kann. Der Standardwert von 512 ist für SUSE 12 SP2 und höher festgelegt und hat Auswirkungen auf alle Services, die auf dem System ausgeführt werden. Weitere Informationen finden Sie in SUSE Linux Enterprise Server 12 SP2 -Releaseinformationen.
systemctl status db2fmcd
* db2fmcd.service - DB2 v11.1.3.3
Loaded: loaded (/etc/systemd/system/db2fmcd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2018-11-08 02:07:56 PST; 3 weeks 6 days ago
Main PID: 939 (db2fmcd)
CGroup: /system.slice/db2fmcd.service
* 939 /opt/ibm/db2/V11.1/bin/db2fmcd
* 14508 db2wdog 0 [db2v111]
* 14512 db2sysc 0
* 14520 db2ckpwd 0
* 14521 db2ckpwd 0
* 14522 db2ckpwd 0
* 14524 db2vend (PD Vendor Process - 1) 0
* 14536 db2acd 0 ,0,0,0,1,0,0,00000000,0,0,0,0000000000000000,0000000000000000,00000000,00000000,00000000,00000000,00000000,00000000,0000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,000000033408b0...
Problemlösung
Versuchen Sie, den Wert von DefaultTasksMax in /etc/systemd/system.conf oder von TasksMax in der Servicedatei (z. B. db2fmcd.service) zu erhöhen.