Pierced
I'm new here

BindException bei häufigen Server-Connects

Wir führen mittels JUnit automatisierte Tests durch und nutzen dafür die FS-API.

Leider erhalten wir in unregelmäßigen Abständen eine BindException des HTTP-Servers, trotz der Tatsache dass nach jedem Test die Verbindung zum Server wieder abgebaut wird:

if (connection != null && connection.isConnected()) {

      connection.close();

}

Ist das ein Problem, das sich z.B. durch Setzen von einer Konfigurationsvariable (etwa maxConnections) beheben lässt?

Noch ein Hinweis: Ich bin mir nicht ganz sicher, ob wir wg. Netzwerkeinstellungen auch auf eine Socket-Verbindung zurückgreifen können.

Stacktrace:

de.espirit.firstspirit.common.IOError: Could not read remote objects! Method RepositoryManager.getNearestContentString(42, 632808568, [19625, 14756763, 161, 359213]) - java.net.BindException: Address already in use: connect

    at de.espirit.firstspirit.client.io.HttpServerCaller.call(HttpServerCaller.java:389)

    at de.espirit.firstspirit.client.io.HttpServerCaller.call(HttpServerCaller.java:40)

    at de.espirit.firstspirit.client.io.ServerCaller.call(ServerCaller.java:233)

    at de.espirit.firstspirit.client.io.ServerCaller.doManagerCall(ServerCaller.java:395)

    at de.espirit.firstspirit.client.io.ServerCaller.callManager(ServerCaller.java:372)

    at de.espirit.firstspirit.io.DefaultClientHandler.callManager(DefaultClientHandler.java:49)

    at de.espirit.firstspirit.client.io.RemoteManagerCaller.invoke(RemoteManagerCaller.java:52)

    at $Proxy21.getNearestContentString(Unknown Source)

PS: Ich habe die Funktion "Code einfügen" hier im Editor noch nicht gefunden. Falls mir jemand kurz sagen kann, wie das geht, wäre ich dankbar dafür. Erhöht doch die Leserlichtkeit...

0 Kudos
3 Replies
Peter_Jodeleit
Crownpeak employee

Erst mal zum post scriptum > die Funktion verbirgt sich im "advanced editor", Link ist in der Titelzeile des RT-Feldes.

Dann zum eigentlichen Problem: In unseren Test-Suites ist dieses Problem noch nicht aufgetreten, daher ist die Wahrscheinlichkeit hoch, das das Problem nicht bei FirstSpirit liegt. Ist das Client-Betriebssystem Windows? Wahrscheinlich greift dann da eine Beschränkung, die dann vom Test beachtet werden muss. Falls der Test unter Linux läuft ist die Anzahl der Filehandles für den Test wahrscheinlich zu gering eingestellt. Falls mit JMeter getestet wird: Dort gibt es einige Bugs und eine JMeter-Instanz kann auch nicht allzuviele Verbindungen simulieren. Ab ca. 300 fangen wir an, JMeter im Cluster-Modus zu betreiben.

Eventuell gibt es aber doch noch einen Code-Pfad, unter dem die Verbindung nicht geschlossen wird? Eine Kombination aus "lsof" + "grep" sollte das schnell beantworten.

Falls das nicht weiterhilft, noch mal melden und FirstSpirit-Version und kurze Testfallbeschreibung (Code?)  beilegen.

Peter

Hallo,

in der Tat läuft der Test auf Windows (der FS-Server allerdings auf Linux). Die beschriebene Ursache, dass der Port nicht freigegeben wird, hört sich plausibel an (und kommt mir auch bekannt vor). Ich werde mal prüfen, inwiefern sich das beheben lässt.

0 Kudos

Ein weiterer Hinweis:

Es scheint sich um ein Problem in der Nähe des LoadBalancers oder am mod_jk-Modul des Apache zu handeln.

Demnach nicht client-seitig.

0 Kudos