-
QSH Probleme zu viele offene Files / Deskriptor ungültig
Moin Zusammen,
ich habe folgendes Problem und schon das ganze WE damit verbracht.
Beim Aufruf > 200 bricht das Programm mit folgendem Fehler ab:
Deskriptor ungültig.
Zu viele offene Dateien für diesen Prozess.
Es geht um ein Programm, welches FTP, SFTP und FTPS durchführt, alles über die QSH Umgebung, mittels Curl oder OPENSSH.
Der Fehler kommt hier hoch:
fd = open(%trim(dsSIQSH.Stdin):O_RDONLY);
if fd = -1;
pErrno = getErrnoPtr();
displayError = %str(strerror(errno));
dsply (displayError);
endif;
Weiter unten wird ein
fd = close(fd);
gemacht. Da kommt das Programm auch immer hin. Das Problem ist, dass dies ganz woanders passieren kann.
Die Anwendung besteht aus vielen Serviceprogrammen, dies noch zur Info.
Da das Programm extrem kritisch ist und laufen muss habe ich versucht den Wert von 200 auf 10000 zu erhöhen, leider greift das nicht, weil dies immer nur in der jeweiligen QSH Session passiert. Man kann es permanent wohl nur über ein C Programm durchführen.
Aufruf im CL Programm:
QSH CMD('ulimit -S -n 10000')
Danch wird der command aufgerufen, der die FTP Übertragung startet.
ulimit wird zwar ausgeführt, gilt aber nur in dieser QSH Umgebung, somit kann ich es nicht nutzen, weil im Programm selbst die QSH Umgebung so geöffnet wird:
QShell like(tSIQSH);
dsSICURL.QShell = QShell;
Irgendwo muss etwas nicht sauber geschlossen werden, finde es aber aktuell nicht, da das Programm fremd geschrieben ist. Die Sourcen liegen vor.
Seht Ihr noch eine Möglichkeit diese Problem erst mal in einem Workarround zu umgehen, bis ich die Stelle gefunden habe. Vlt. wird auch alles sauber geschlossen und es handelt sich um eine ganz anderes Problem.
Ich habe auch nichts gefunden die offenen Files/Zugriffe der QSH Umgebung wieder zurückzusetzen, außer dass der Job beendet werden muss.
Ein RCLRSC hat nicht geholfen, auch nicht RCLRSC *Caller.
Auch wichtig wäre, wie man überhaupt sehen kann wie der Counter hoch geht.
Vielen Dank schon mal.
Gruß Klaus
-
"Irgendwo muss etwas nicht sauber geschlossen werden, finde es aber aktuell nicht"
Da gibts leider keinen Workaround.
Was macht das Script ansosnten noch?
Ggf. kannst du das "partitionieren", also u.U. in Häppchen zu max. 100 Dateien?
Ggf. kannst du auch einen Zwangsclose machen:
https://www.ibm.com/docs/en/i/7.5.0?topic=commands-exec
-
Wo genau gibt es welche Fehlermeldung?
Der Open wird ja im RPG gemacht und nicht in der QSH, wenn ich es richtig verstanden habe.
Du kannst aber in der QSH Befehle verketten:
Z.B.: QSH CMD('ulimit -S -n 10000; echo cmd2; echo cmd3')
Ich würde auch mal den STRAUTCOL Befehl checken. Eventuell kannst du hier erkennen ob die entsprechenden CLOSE Prozeduren aufgerufen werden. Die Chance ist zwar eher gering, aber wenn du Glück hast, werden sie hier aufgelistet. Dann könntest du das besser prüfen.
Ansonsten würde ich einfach eine Logausgabe für jeden Open und Close machen.
Dann siehst du auch wo immer ein Open/Close gemacht wird.
lg Andreas
-
Danke Euch, ich habe nun mitdem C Programm direkt am Anfang des Programmes für den FTP Prozess den Wert von ulimit auf 10000 gesetzt. Damit kommen wir aktuell jeden Tag über die Runden, da der Job am Abend beendet wird. Aber schon wenig, dass der default Wert auf 200 sitzt. In der Pase Umgebung sind es immerhin 2000.
Genau der Open und close wird im RPG gemacht in unterschiedlichen Service Programmen, ein Beispiel auch hierzu:
//----------------------------------------------------------
// Routine doSFTP
//----------------------------------------------------------
begsr doSFTP;
sFTP = SISFTP_new(QShell:Credentials:Srv:Server.port);
SISFTP_runCmd(sFTP:%trim(cmd));
QShellLog = SISFTP_getQShellLog(sFTP);
QShellLogId = SISFTP_getId(sFTP);
QshLogEntrys = SIQSHLOG_listById(QShellLog:QShellLogId);
SISFTP_close(sFTP);
endsr;
Die Idee mit dem Open / Close werde ich wohl machen müssen, sonst wird es extrem komplex.
Was bewirkt der STRAUTCOL? Habe gelesen, dass es hier um Berechtigungen geht, wie soll sich das auf einen fehlenden Close auswirken und wo wird das hin protokolliert?
Gruß Klaus
-
@STRAUTCOL:
Genau, dieser ist vom Gedanken erstellt worden um die Berechtigungen auf der i zu Prüfen und Protokolliert alle Objekt-Zugriffe.
Und genau das hilft mir bei vielen Analysen von Anwendungen, wenn ich wissen will welche Objektzugriffe, von welchen Programmen in welche Reihenfolge und zeitlichen Abständen getätigt werden.
Ich verwende es mittlerweile sehr oft aber nur selten für Berechtigungsprüfungen.
Ansonsten noch eine persönliche Meinung:
Ich würde solche Arbeiten gleich komplett in der QSH abarbeiten lassen. Z.B. via Python.
Sind meistens nur ein paar Zeilen code und funktioniert super. Habe schon viele solcher Apps in Produktion bei diversen Kunden.
Läuft ohne Probleme und ist sehr simple.
-
Wenn du nur IFS-Dateien auslesen willst, kannst du dies inzwischen einfach und schnell per SQL tun und benötigst die C-Routinenen gar nicht mehr.
Auch die Datenumsetzung (ANSI/ASCII->EBCDIC) passiert da vollautomatisch.
Mit Open/Close hast du da dann nichts mehr zu tun.
Ausnahmen sind natürlich STDIN/-OUT/-ERR, die man ja mit OVRDBF umleiten kann.
Damit kann man i.Ü. auch den Output von QSH direkt in eine PF umleiten.
https://www.ibm.com/docs/en/i/7.6.0?...able-functions
Gibts nicht erst seit 7.6;-).
Similar Threads
-
By WiedemeierP in forum NEWSboard Programmierung
Antworten: 16
Letzter Beitrag: 10-04-19, 09:27
-
By camouflage in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 05-02-16, 09:02
-
By holgerscherer in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 01-02-11, 15:08
-
By Siggi_ in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 14-01-09, 10:25
-
By dr.chiller in forum NEWSboard Drucker
Antworten: 0
Letzter Beitrag: 13-05-08, 12:28
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks