2010-11-26 12 views
1

J'ai rencontré une telle question à propos de msgget récemment. Bientôt, il consomme tout le msqid dans le noyau. Comme le msgget est persistant dans le noyau, la prochaine fois, le processus s'exécutera et quittera immédiatement avec ENOSPC. Bien que la configuration de sysconf pour compiler le problème.Est-ce que msgget peut être malveillant?

mais je devrais reconfigurer encore et encore si le code malveillant continue de fonctionner.

C'est une sorte de fuite sérieuse, selon moi, et qui fait que les autres processus sont en manque de msqid.

Comment l'administrateur système peut-il éviter cela?

Répondre

3

Toutes les interfaces SysV IPC (mémoire partagée, sémaphores, etc.) ont ce même problème, parmi beaucoup d'autres problèmes, dont le pire est une performance atroce due à conception où chaque opération nécessite un appel dans l'espace noyau. Si vous le pouvez, abandonnez ces interfaces et utilisez les remplacements POSIX équivalents (mq_* pour les files d'attente de messages).

0

Utilisez haut et strace pour rechercher le processus qui continue de créer des files d'attente de messages et de supprimer ce processus. (ceci suppose linux, les autres unix ont des outils équivalents)