komische maximallast von perl - kennt das wer?

Begonnen von the ratman, 31 Mai 2017, 10:16:34

Vorheriges Thema - Nächstes Thema

the ratman

hiho,

ich hatte gestern avebd um punkt 21:30 uhr auf einmal perl auf maximaler last laufen (25%, weil nur 1 kern) - siehe abhang

in 90% der zeit war perl daran schuld, im rest der zeit cron.
kein fhem-restart, kein raspi-reboot, nix brachte was.
und dann gings auf einmal wieder von ganz alleine.

kennt das wer, was könnte das sein?
was kann ich gegen tun?

danke für eventuelle infos!
→do↑p!dnʇs↓shit←

Wernieman

Sorry aber zuwenig Info, um es nachträglich zu erklähren.

Gut wäre eine Prozessliste, zum Zeitpunkt "des Problems":
ps aux

Auf jedem Falle hat in der Zeit Dein Gerät etwas getan ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

the ratman

ich hatte grade nen taskmanager offen.
wie gesagt: alle prozesse liefen stink normal von den %, nur perl lief bei 25%, also 1 kern 100%.
auffällig war, dass eben mal der prozess "cron" für ca. 5 bis 10 min die 25% übernommen hatte und zu der zeit perl wieder bei den üblichen 1 bis 3% rumgetümpelt ist.
ich hab aber (zumindest selber) keine cronjobs angelegt auf dem raspi.
was vielleicht noch interessant wäre: den ganzen tag hab ich nix am system rumgedreht, kein device angelegt/gelöscht/geändert, einfach nix getan. so sieht auch gleich das fhem-log aus, wenn man von den müllmeldungen des dlna-renderers absieht. aber die sind auch ned neu oder gestern anders als sonst gewesen ( https://forum.fhem.de/index.php/topic,72423.msg640638.html#msg640638 ).

ich hab auch eher gehofft, dass ich gesagt krieg, wie ich rauskriegen kann, warum perl auf einmal so ne last macht.
linux hat ja sonst auch für jeden scheiß x befehle. da gibts doch sicher auch was, wo ich mir genauer ansehen kann, was perl zu solchen eskapaden getrieben hat.
→do↑p!dnʇs↓shit←

Wernieman

Wenn Cron Zeit brauchst, dann läuft ein Cron.

Schau mal unter
ls -lha /etc/cron*
ls -lha /var/spool/cron/crontabs


Und wie schon gesagt, zur Vergangenheit kann man wenig sagen ... und auch perl ist ""nur" eine Programmiersprache. D.h. nicht perl. sondern das in Perl-Programmierte Programm macht diese Auslastung. Fhem ist eines von diesen.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

the ratman

is mir schon klar, dass im nachhinein schwer was zu sagen geht. drum auch gleich thx für deine mühen!
mir gehts - wie gsagt - eher auch darum für das nächste mal gewappnet zu sein. vielleicht verfall ich dann nicht gleich wieder in panik und mach vernünftiges *g*.

aja, hab deine 2 befehle mal ausgeführt. vielleicht siehst du da ja komisches?pi@ratOhaus:~ $ ls -lha /etc/cron*
-rw-r--r-- 1 root root  722 Sep  5  2015 /etc/crontab

/etc/cron.d:
insgesamt 24K
drwxr-xr-x   2 root root 4,0K Apr 21 13:02 .
drwxr-xr-x 119 root root  12K Mai 25 12:08 ..
-rw-r--r--   1 root root  661 Apr 14 20:31 php5
-rw-r--r--   1 root root  102 Sep  5  2015 .placeholder

/etc/cron.daily:
insgesamt 68K
drwxr-xr-x   2 root root 4,0K Mai 25 12:08 .
drwxr-xr-x 119 root root  12K Mai 25 12:08 ..
-rwxr-xr-x   1 root root  15K Dez 13 23:38 apt
-rwxr-xr-x   1 root root  314 Jun 15  2014 aptitude
-rwxr-xr-x   1 root root  355 Okt 28  2014 bsdmainutils
-rwxr-xr-x   1 root root 1,6K Jun  5  2016 dpkg
-rwxr-xr-x   1 root root   89 Jan 28  2014 logrotate
-rwxr-xr-x   1 root root 1,3K Jan  6  2015 man-db
-rwxr-xr-x   1 root root 1,1K Jul 26  2016 ntp
-rwxr-xr-x   1 root root  249 Feb 24 23:49 passwd
-rw-r--r--   1 root root  102 Sep  5  2015 .placeholder
-rwxr-xr-x   1 root root  383 Apr  2 19:50 samba

/etc/cron.hourly:
insgesamt 24K
drwxr-xr-x   2 root root 4,0K Apr 10 11:25 .
drwxr-xr-x 119 root root  12K Mai 25 12:08 ..
-rwxr-xr-x   1 root root  191 Mär 16  2015 fake-hwclock
-rw-r--r--   1 root root  102 Sep  5  2015 .placeholder

/etc/cron.monthly:
insgesamt 20K
drwxr-xr-x   2 root root 4,0K Apr 10 11:14 .
drwxr-xr-x 119 root root  12K Mai 25 12:08 ..
-rw-r--r--   1 root root  102 Sep  5  2015 .placeholder

/etc/cron.weekly:
insgesamt 24K
drwxr-xr-x   2 root root 4,0K Apr 10 11:14 .
drwxr-xr-x 119 root root  12K Mai 25 12:08 ..
-rwxr-xr-x   1 root root  771 Jan  6  2015 man-db
-rw-r--r--   1 root root  102 Sep  5  2015 .placeholder


sudo ls -lha /var/spool/cron/crontabs
insgesamt 8,0K
drwx-wx--T 2 root crontab 4,0K Sep  5  2015 .
drwxr-xr-x 3 root root    4,0K Apr 10 11:13 ..
→do↑p!dnʇs↓shit←

Wernieman

Jede Datei, Die nicht mit einem "." Anfängt, ist eine Crondefinition. Diese dienen zur Systempflege. Kannst Dir ja mal mit "cat" ansehen. Aber mir fällt dabei nichts auf ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

the ratman

dann dank ich dir fürs drüber schaun. das beruhigt schon mal ein kleines bissi

ist cat ned irgendwas zum dateien zusammenlegen oder so?
→do↑p!dnʇs↓shit←

Wernieman

Neee ... "cat" ist zum anzeigen
https://de.wikipedia.org/wiki/Cat_(Unix)

Das mann damit Dateien zusammenlegen kann, ist eher ein "Abfallprodukt"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

the ratman

#8
ich hab meinen raspi gerade wieder mit 1 voll ausgelasteten kern erwischt. seit meinem letzten beitrag hier war ruhe.
prozess perl, user fhem

ein strace müllt mit folgendem voll:open("./www/images/fhemSVG/rc_dot.svg", O_RDONLY|O_LARGEFILE) = 47
ioctl(47, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0x7eea78a4) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(47, 0, [0], SEEK_CUR)           = 0
fstat64(47, {st_mode=S_IFREG|0777, st_size=1062, ...}) = 0
fcntl64(47, F_SETFD, FD_CLOEXEC)        = 0
read(47, "<?xml version=\"1.0\" encoding=\"UT"..., 8192) = 1062
read(47, "", 8192)                      = 0
close(47)   
und dazwischen immer mal wiederbrk(0x56ab000)                          = 0x56ab000
brk(0x564c000)                          = 0x564c000
read(9, "E461363,0000,0003BB0C,FF,FFCD,4B"..., 4096) = 58
gettimeofday({1497185015, 975057}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 975381}, NULL) = 0
gettimeofday({1497185015, 975583}, NULL) = 0
gettimeofday({1497185015, 976009}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 976467}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 976702}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 977361}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 979764}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 980654}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 981715}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 982036}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 983188}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 983959}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 984742}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 985123}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 986911}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 987352}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 990521}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 991217}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 991739}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 992117}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 995018}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 995683}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 996209}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 996560}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 998325}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185015, 998775}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185016, 497}, NULL)   = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185016, 949}, NULL)   = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185016, 3099}, NULL)  = 0
gettimeofday({1497185016, 3515}, NULL)  = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185016, 3781}, NULL)  = 0
gettimeofday({1497185016, 4414}, NULL)  = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
gettimeofday({1497185016, 4902}, NULL)  = 0

kann das mein problem sein? und wenn ja, wie löse ich das?
→do↑p!dnʇs↓shit←

the ratman

ich glaub ich spinne

ich schau mal so alles durch, wo ich rc_dot_svg verwendet hab und finde eine rg mit
'state.closed' => 'rc_dot@green ',
ich entsorge den space am ende - hab ich wohl versehentlich irgendwann mal gemacht, restarte fhem (hat sonst auch nie was gebracht, nicht mal n reset) und ruhe is ...

zufall oder wars echt der eine blöde space? so einfach kann das bei linux doch nicht sein?

wenn es das war - kann man den fehler nicht irgendwie abfangen? das findet ja kein mensch und ein space wäre für einen temperaturanstieg meines raspi um 20° zuständig - ich denke, das könnt ins auge gehen.
→do↑p!dnʇs↓shit←

Wernieman

Kann Dir nicht weiterhelfen, aber möchte ein paar Klarstellungen:
Was Du schreibst ist perl, nicht Linux. Unter Windows hättest Du damit das gleiche "Problem" (oder eventuell sogar mehr)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

the ratman

#11
scheint tatsächlich kein zufall gewesen zu sein - fhem tuckert brav mit seinen <3% last rum.
die zeiten stimmen übrigens mit meinen "türschließungen wegen aussenhitze" zusammen, es wird also wirklich glaubhafter.

und ja, deine klarstellung ist mir schon klar. ich bin und bleib aber ein begeisterter dau, drum sind mir genaue begriffe egal, oder nicht cool genug zum verwenden *g*
wenn bei windoof was nicht geht (was bei meinen installationen eher selten is), dann geb ich definitiv apple und/oder auch linux  und/oder sonnenflecken die schuld - nur, um das auch mal klargestellt zu haben ...

mal ernsthaft wieder:
du, mir gehts eher darum, dass einer ders wiklich blickt, das ganze eventuell nachprüft und - so ein space wirklich ein problem is - eventuelle sicherheitesroutinen in fhem einbaut.
man könnte natürlich auch ein modul draus machen, 01_ZUSATZHEIZUNG oder so. solang die raspis nicht ganz abbrennen, hat man somit einen mehrwert im winter oder sogar ein kleines, romantisches kaminfeuerchen.
→do↑p!dnʇs↓shit←

Wernieman

Da möchte ich Dir eine Klarstellung geben, warum es eben nicht nur "cool" sondern wichtig ist, es zu unterscheiden:

Stell Dir mal vor, Dein Auto (im Beispiel BMW) hat einen Platten. Fragst Du auch jetzt im Netz um Hilfe, weil Dein BMW kaputt ist? Wunderst Du Dich auch, wenn Dir Helfe den Unterschied zwischen BWM (Auto) und Reifen sagen wollen?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

the ratman

nö, ich lass meinen fahren den öamtc anrufen und schimpfe den lohnsklaven dann, dass er so lange gebraucht hat. *g*
→do↑p!dnʇs↓shit←

the ratman

so, ums mal wieder ernst werden zu lassen.

meine probleme waren nur scheinbar behoben - ich hab wieder meinen 1 kern voll ausgelastet und keine ahnung, was ich tun soll.
langsam steigt die temp. meines raspi in unangenehme höhen.

hat irgendwer zumindest eine ahnung, in welche richtung ich generell suchen muß?
und könnte mir bitte einer der wissenden hier eine art rezept geben, was ich alles abrufen/dokumentieren muß, damit man mir helfen kann.
ich steh total an und muß sonst fhem ganz abschalten, bevor was über nacht passiert ...

→do↑p!dnʇs↓shit←