Hi,
# worked in F31
# caused problems in F33
I upgraded a system from F31 to F33 via dnf distro-sync and it did
boot extrem slow.
A systemd.debug-shell=1 && strace of systemd-tmpfiles
later, it looked like a massive resolve problem,
as next to any step from the tmpfiles process created at least 2
dns lookups.
ls -la /dev/ took round about 20 seconds, also creating dns lookups.
Due to the dns lookuped hostname I could nail it down to having
"mysql" to nsswitch.conf like this:
passwd: mysql files systemd
shadow: mysql files
group: mysql files systemd
System takes up to 10 Minutes to boot due to massive failing
dns resolve calls for the configured mysql auth servername when
enabled, when removed it boots in seconds.
>> The same config did not cause delays on F31. <<
As this config is needed to do an enterprise like login schema based
on mysql, I think the order of starting services and sockets needs a
correction.
Can someone involved in Systemd take a look at it?
Those two processes are the only ones running besides pid 1, when
the problem hits the boot process, which starts at switchroot() to
the real sysroot:
|- .. root bash tty 9
|- systemd-tmpfiles
'- systemd-journald
the mysql server is ofcourse a remote server, otherwise it would not
make any sense to use this , but it would not matter due to the lack
of network at this point.
libnss-mysql.cfg looks like this, just to give an impression of what
needs to go on:
$ cat /etc/libnss-mysql.cfg
getpwnam SELECT username,'x',uid,gid,name,homedir,shell \
FROM users \
WHERE username='%1$s' \
LIMIT 1
getpwuid SELECT username,'x',uid,gid,name,homedir,shell \
FROM users \
WHERE uid='%1$u' \
LIMIT 1
getspnam SELECT
username,password,lstchg,min,max,warn,inact,expire,flag \
FROM users \
WHERE username='%1$s' \
LIMIT 1
getpwent SELECT username,'x',uid,gid,name,homedir,shell \
FROM users
getspent SELECT
username,password,lstchg,min,max,warn,inact,expire,flag \
FROM users
getgrnam SELECT name,password,gid \
FROM groups \
WHERE name='%1$s' \
LIMIT 1
getgrgid SELECT name,password,gid \
FROM groups \
WHERE gid='%1$u' \
LIMIT 1
getgrent SELECT name,password,gid \
FROM groups
memsbygid SELECT username \
FROM grouplist \
WHERE gid='%1$u'
gidsbymem SELECT gid \
FROM grouplist \
WHERE username='%1$s'
host remote.hostname
port 3XXX
database XXXXXXXXXx
username XXXXXXXXXXXXX
password XXXXXXXXXXXX
#socket /var/lib/mysql/mysql.sock
I'm pretty sure, this would also fail on F34, if the network is not
reachable when needed.
libnss-mysql updated from 1.5-34 to 1.5-37 and nss from 3.58 to
3.63, just in case, nss caused this behaviour.
Of
best regards,
Marius Schwarz