Frage zur Ausgabe von "netstat"

Azurel

Member
In einem Projekt steigt die Session Datenbank ungewöhnlich immer weiter an.. daher habe ich mal in der shell folgende Ausgabe gemacht:

# netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
List all the unique IP addresses of the node that are sending SYN_REC connection status.

Das war die Ausgabe:
13 xx.xx.xx.xx
13 xx.xx.xx.xx
13 xx.xx.xx.xx
14 xx.xx.xx.xx
15 xx.xx.xx.xx
17 xx.xx.xx.xx
18 xx.xx.xx.xx
29 2a02
31 2003
226 127.0.0.1
3134 SERVER-IP
4297

Ich habe kein Vergleich.. ist hier der Wert 3134 für die Server IP so normal? Der leztzte Wert ist vermutlich die Summe aller Verbindungen?

Meine Apache Config:
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 1000
MaxClients 1000
MaxRequestsPerChild 4000
</IfModule>

Kann mir hier jemand weiterhelfen?

EDIT:

Das ist ein 32GB RAM Server mit 6Core CPU. ;)
 
Last edited by a moderator:
In einem Projekt steigt die Session Datenbank ungewöhnlich immer weiter an
Welche Sessions, meinst du Web Sessions oder TCP-Sessions? Das Wörtchen "Datenbank" lässt mich vermuten dass es Web Sessions (bspw PHP) sind.

In dem Fall läufst du mit SYN_RECEIVED etwas falsch - denn das sind die ja noch nicht offenen Verbindungen während hier höchstens Anomalien bei ESTABLISHED aussagend sind.
_EIGENTLICH_ sollte der Wert aber recht niedrig sein - deine hohe Zahl deutet auf eine immense Anzahl an halbgeöffneten Verbindungen und potentiel Synflooding -> dies könntest du mit Iptables testweise einschränken (Anzahl SYN/IP/Zeitintervall + Syncookies)
Bitte beschreibe aber mal genauer dein konkretes Problem. Vor allem; deuten deine Logs auf irgendwelche Unregelmäßigkeiten hin?
 
Danke für die Hilfe.

Ich habe ein Webprojekt und die Sessions der Besucher werden dort per Datenbank verwalten.

Ich hatte bis vor ein paar Tagen noch MaxClients 512 stehen, aber da Benutzer meinten das ab und an der Server lange brauch zum laden (nicht PHP Zeit), habe ich das auf 1000 erhöht.

Ein Script im Web hat meinen Wert bestätigt: http://techietent.blogspot.de/2013/05/script-to-calculate-maxclients-in-apache.html

Das Script hat das ausgegeben:
# ./maxcalc.sh

Total Memory = 32105
Largest httpd Process = 30
Mysql Memory = 1079

So, The MaxClients = 1034
(we can use nearest round of value from 1034)

Ich habe den Wert jetzt auf MaxClients/Serverlimit auf 500 zurück gesetzt. und anschließend:
# /etc/init.d/httpd graceful

Am Problem ändert das aber nichts. In meinem Webprojekt werden mir angeblich 8000-10000 Besucher angezeigt. Was totaler Unsinn ist.

Ich habe MRTG statistik laufen. Das zeigt zum Beispiel ganz normale "Connections" Werte an. Daher bin ich etwas ratlos was das jetzt soll.

MRTG Statstik für Connections sagt:
In 1010.0 connections(max) 511.0 connections(Average) 994.0 connections(current)

Ist jetzt mein MaxClients Wert 1000 völlig falsch gewesen?


List all the unique IP addresses of the nodes that are sending SYN_REC connection status.
#netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
Gibt eine einzige IPv4 aus.


Check on ESTABLISHED connections instead of all connections, and display the number of connections for each IP.
#netstat -plan|grep :80|awk {‘print $5′}|cut -d: -f 1|sort|uniq -c|sort -nk 1
Die letzten Werte davon
20 199.30.20.xxx
33 178.191.224.xxx
48 2003
95 2a02

# free -m
total used free shared buffers cached
Mem: 32105 31856 248 0 1537 25501
-/+ buffers/cache: 4817 27287
Swap: 999 133 866


#top
top - 21:05:38 up 26 days, 18:36, 1 user, load average: 1.13, 1.19, 1.17
Tasks: 211 total, 3 running, 206 sleeping, 0 stopped, 2 zombie
Cpu(s): 3.5%us, 2.8%sy, 1.8%ni, 91.1%id, 0.6%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 32875680k total, 32602096k used, 273584k free, 1574804k buffers
Swap: 1023992k total, 136448k used, 887544k free, 26115680k cached


# cat netstat.txt | sed -e 's| *$||' -e 's|.* ||' | sort | uniq -c | sort -n

// Letzte Zeilen:
4 *:*
4 LAST_ACK
6 /var/lib/mysql/mysql.sock
14 FIN_WAIT1
32 LISTEN
85 FIN_WAIT2
852 ESTABLISHED
11452 TIME_WAIT

Ich weiss leider momentan nicht weiter ^^°


EDIT:

Ich habe netstat mal als TXT gespeichert und folgendes ausgegeben:
# grep xxxxx.rs.hosteurope:http netstat.txt | wc -l
1591

# grep xxxxx.rs.hosteurope:http netstat.txt | grep -v ESTABLISHED | wc -l
800

# grep xxxxx.rs.hoste:empowerid netstat.txt | grep -v ESTABLISHED | wc -l
10038

# grep xxxxx.rs.hosteurope:http netstat.txt | grep ESTABLISHED | wc -l
791

# grep xxxxx.rs.hoste:empowerid netstat.txt | grep ESTABLISHED | wc -l
3
empowerid ist glaub der apache/httpd?

httpd.conf hat auch noch das
KeepAlive On
MaxKeepAliveRequests 80
KeepAliveTimeout 5


EDIT2:

# netstat -a | grep xxxxx.rs.hosteurope:http | grep ESTABLISHED | wc -l
669

Der Server arbeitet mit apache und nginx für statische Inhalte.


EDIT3:

# grep SYN_RECEIVED netstat.txt
Keine Ausgabe
 
Last edited by a moderator:
Back
Top