Ik heb hier een 'oude' server geërfd met Ubuntu 14.04 (die mag niet geupgrade worden door allerlei externe redenen).
Daar draaien verschillende services op, waaronder een Tomcat 7.5 based applicatie en een mysqld (mysqld 5.5.62-0ubuntu0.14.04.1)
Nu, die mysqld gebruikt 1 CPU volledig van dat machine, zowat constant.
Ik ben op onderzoek gegaan en door middel van een strace zag ik dit:
Met andere woorden heel veel hits op /etc/hosts.allow en /etc/hosts.deny
Beide files hebben geen inhoud buiten de standaard headers
In de volgende link had ik gevonden dat dat eventueel met DNS te maken kon hebben:
Er stonden eerst instellingen inderdaad verkeerd, van lang geleden, maar deze zijn allemaal rechtgezet (resolv.conf geeft nu de juiste DNS servers aan.
my.cnf is ook aangepast met "skip-name-resolve" (en herstart)
maar uiteindelijk, na al deze aanpassingen blijft mysqld naar 100% schieten zonder verklaarbare reden.
Het échte werk waarvoor er een mysqld opstaat, op die server, moet dagelijks gebeuren en gebeurd ook, maar uiteraard trager als het zou kunnen.
Heeft er iemand een idee hoe dit zou kunnen komen of wat ik nog verder kan doen om te achterhalen waarom mysqld die tcpwrappers gebruikt? of vanwaar die instructies komen om die reads te doen?
Daar draaien verschillende services op, waaronder een Tomcat 7.5 based applicatie en een mysqld (mysqld 5.5.62-0ubuntu0.14.04.1)
Nu, die mysqld gebruikt 1 CPU volledig van dat machine, zowat constant.
Ik ben op onderzoek gegaan en door middel van een strace zag ik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| open("/[b]etc/hosts.deny[/b]", O_RDONLY) = 32 fstat(32, {st_mode=S_IFREG|0644, st_size=711, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6360633000 read(32, "# /etc/hosts.deny: list of hosts"..., 4096) = 711 read(32, "", 4096) = 0 close(32) = 0 munmap(0x7f6360633000, 4096) = 0 getsockname(31, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 fcntl(31, F_SETFL, O_RDONLY) = 0 fcntl(31, F_GETFL) = 0x2 (flags O_RDWR) setsockopt(31, SOL_SOCKET, SO_RCVTIMEO, "\36\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0 setsockopt(31, SOL_SOCKET, SO_SNDTIMEO, "<\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0 fcntl(31, F_SETFL, O_RDWR|O_NONBLOCK) = 0 setsockopt(31, SOL_IP, IP_TOS, [8], 4) = 0 setsockopt(31, SOL_TCP, TCP_NODELAY, [1], 4) = 0 futex(0x5574ccacad84, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x5574ccacad80, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 futex(0x5574ccac87e0, FUTEX_WAKE_PRIVATE, 1) = 1 poll([{fd=10, events=POLLIN}, {fd=12, events=POLLIN}], 2, 4294967295) = 1 ([{fd=10, revents=POLLIN}]) fcntl(10, F_GETFL) = 0x2 (flags O_RDWR) fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0 accept(10, {sa_family=AF_INET, sin_port=htons(36782), sin_addr=inet_addr("127.0.0.1")}, [16]) = 31 fcntl(10, F_SETFL, O_RDWR) = 0 rt_sigaction(SIGCHLD, {SIG_DFL, [CHLD], SA_RESTORER|SA_RESTART, 0x7f635edfbcb0}, {SIG_DFL, [CHLD], SA_RESTORER|SA_RESTART, 0x7f635edfbcb0}, 8) = 0 getpeername(31, {sa_family=AF_INET, sin_port=htons(36782), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 getsockname(31, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 open("[b]/etc/hosts.allow[/b]", O_RDONLY) = 32 fstat(32, {st_mode=S_IFREG|0644, st_size=411, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6360633000 read(32, "# /etc/hosts.allow: list of host"..., 4096) = 411 read(32, "", 4096) = 0 close(32) = 0 munmap(0x7f6360633000, 4096) = 0 open("/etc/hosts.deny", O_RDONLY) = 32 fstat(32, {st_mode=S_IFREG|0644, st_size=711, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6360633000 read(32, "# /etc/hosts.deny: list of hosts"..., 4096) = 711 read(32, "", 4096) = 0 close(32) = 0 munmap(0x7f6360633000, 4096) = 0 getsockname(31, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 fcntl(31, F_SETFL, O_RDONLY) = 0 fcntl(31, F_GETFL) = 0x2 (flags O_RDWR) setsockopt(31, SOL_SOCKET, SO_RCVTIMEO, "\36\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0 setsockopt(31, SOL_SOCKET, SO_SNDTIMEO, "<\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0 fcntl(31, F_SETFL, O_RDWR|O_NONBLOCK) = 0 setsockopt(31, SOL_IP, IP_TOS, [8], 4) = 0 setsockopt(31, SOL_TCP, TCP_NODELAY, [1], 4) = 0 futex(0x5574ccacad84, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x5574ccacad80, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 poll([{fd=10, events=POLLIN}, {fd=12, events=POLLIN}], 2, 4294967295^CProcess 1215 detached <detached ...> |
Met andere woorden heel veel hits op /etc/hosts.allow en /etc/hosts.deny
Beide files hebben geen inhoud buiten de standaard headers
code:
1
2
3
4
5
6
7
8
9
| ~$ cat /etc/hosts.allow # /etc/hosts.allow: list of hosts that are allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: LOCAL @some_netgroup # ALL: .foobar.edu EXCEPT terminalserver.foobar.edu # # If you're going to protect the portmapper use the name "rpcbind" for the # daemon name. See rpcbind(8) and rpc.mountd(8) for further information. |
In de volgende link had ik gevonden dat dat eventueel met DNS te maken kon hebben:
Er stonden eerst instellingen inderdaad verkeerd, van lang geleden, maar deze zijn allemaal rechtgezet (resolv.conf geeft nu de juiste DNS servers aan.
my.cnf is ook aangepast met "skip-name-resolve" (en herstart)
maar uiteindelijk, na al deze aanpassingen blijft mysqld naar 100% schieten zonder verklaarbare reden.
Het échte werk waarvoor er een mysqld opstaat, op die server, moet dagelijks gebeuren en gebeurd ook, maar uiteraard trager als het zou kunnen.
Heeft er iemand een idee hoe dit zou kunnen komen of wat ik nog verder kan doen om te achterhalen waarom mysqld die tcpwrappers gebruikt? of vanwaar die instructies komen om die reads te doen?