Ich habe mir überlegt um dem etwas vorzubeugen könnte ich dem Popup-Thread meine fixed-Size Nachricht und die Größe des zusätzlichen Speichers mitgeben und der Code kann dann entscheiden ob die Größe für diesen Nachrichtentyp in Ordnung geht (was ja auch relativ ist).
Nur kostet das halt wieder Performance (es muss, wenn noch Speicher mitgeschickt wurde, noch ein Syscall gemacht werden um diesen auch mappen zu lassen), aber ich habe die Möglichkeit zu sagen, das diese Nachricht nicht weiter bearbeitet werden soll.
Was ich noch nicht weiß wie ich es löse ist, was passiert wenn der virtuelle Speicher des Services zu voll ist um eine Nachricht (also den zusätzlichen Speicher) empfangen zu können. Sollte ich dann warten bis genug Speicher frei ist (wie sollte man das lösen) oder sollte ich einfach dem Clienten eine Nachricht schicken das der Service nicht genügend Speicher hat um die Nachricht zu empfangen?
Rein theoretisch wäre es möglich das ein Client 256MB mit sinnlosen Daten hat und 12 Threads und alle Threads machen eine RPC Anfrage an den Storage-Server mit den 256MB. Dann ist der Storage-Server erstmal beschäftigt und kann keine weiteren Anfragen mehr annehmen, weil er keinen freien virtuellen Speicher mehr hat. Das ist zwar nur kurzzeitig, aber es ist halt möglich.
Ich weiß auch nicht wieviel Sinn es macht ein gewisses Limit einzuführen (z.B. 32MB). Eigentlich sollte es nicht so schlimm sein, wenn ein Client mehrere Anfragen machen müsste um mehr Daten zu bekommen oder? Weil dann bräuchte es schon 96 Threads/Clients für eine DoS-Attacke (sind zwar auch nicht zu viele, aber immerhin
).
Was die FIFO-Queue betrifft mache ich mir da mehr sorgen um das malloc() was ich da bräuchte (Thread-safe).
Nur kostet das halt wieder Performance (es muss, wenn noch Speicher mitgeschickt wurde, noch ein Syscall gemacht werden um diesen auch mappen zu lassen), aber ich habe die Möglichkeit zu sagen, das diese Nachricht nicht weiter bearbeitet werden soll.
Was ich noch nicht weiß wie ich es löse ist, was passiert wenn der virtuelle Speicher des Services zu voll ist um eine Nachricht (also den zusätzlichen Speicher) empfangen zu können. Sollte ich dann warten bis genug Speicher frei ist (wie sollte man das lösen) oder sollte ich einfach dem Clienten eine Nachricht schicken das der Service nicht genügend Speicher hat um die Nachricht zu empfangen?
Rein theoretisch wäre es möglich das ein Client 256MB mit sinnlosen Daten hat und 12 Threads und alle Threads machen eine RPC Anfrage an den Storage-Server mit den 256MB. Dann ist der Storage-Server erstmal beschäftigt und kann keine weiteren Anfragen mehr annehmen, weil er keinen freien virtuellen Speicher mehr hat. Das ist zwar nur kurzzeitig, aber es ist halt möglich.
Ich weiß auch nicht wieviel Sinn es macht ein gewisses Limit einzuführen (z.B. 32MB). Eigentlich sollte es nicht so schlimm sein, wenn ein Client mehrere Anfragen machen müsste um mehr Daten zu bekommen oder? Weil dann bräuchte es schon 96 Threads/Clients für eine DoS-Attacke (sind zwar auch nicht zu viele, aber immerhin
).Was die FIFO-Queue betrifft mache ich mir da mehr sorgen um das malloc() was ich da bräuchte (Thread-safe).

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
