HTTP Apache-HttpClient/UNAVAILABLE (java 1.4)

DefconDev

Bekanntes Mitglied
Hallo zusammen,

bitte verschieben, sollte der Thread im falschen Sub-Forum erstellt worden sein. Auf unserem Server habe ich in einem Log in /var/log/httpd/ folgenden Eintrag ziemlich oft gefunden
Java:
HTTP/1.1" 200 64 "-" "Apache-HttpClient/UNAVAILABLE (java 1.4)

Dieser Fehler wird generiert von unseren Clients die ein Android Device verwenden, mit einer App die nicht wirklich aktuell ist.
In der Build.Gradle ist folgende Lib gesetzt: org.apache.http.legacy
Unser Servic(REST) der die Anfragen annimmt, verwendet folgende Version: 'org.apache.httpcomponents:httpclient:4.5.2'. Der Service läuft auf einem alten Tomcat 6.0.x.
Wir sind gerade auf Fehlersuche, weil ca. 10-20% unserer Client-Anfragen, welche zufällig sind, sporadisch nicht von unserem Server verarbeitet werden.

1. Also das was mich irritiert, die Handys/Clients laufen nicht immer in diesen Fehler, sondern erhalten mit etwas Geduld auch alles. Also GET/POST kommen meist auch an. Aber wie beschrieben, wissen wir von Anwendern, dass das meist Zeit kostet für ein paar Clients. Statt im Minutentakt, dauert das Stunden.
2. Die Fehlermeldung, wenn das überhaupt die ist, wonach ich suche, irritiert. Eigentlich wird ein 200 gepostet, was für mich bedeutet, die Anfrage ist angekommen und verarbeitet worden aber das UNAVAILABLE macht mich stutzig.
3. Unsere bisherige Fehlersuche, vermutet unseren Tomcat Server, der permanent mit 114 Threads auf WAITING steht(server.xml), und der maxThread ist auf 200 gesetzt für einen spezifischen Port. Ein ps -o nlwp "PID_desTomcats" liefert ca. 178 Threads, wobei 114 wie gesagt auf WAITING stehen. Neustart des Tomcats hat auch nicht geholfen.

Kann sich jemand generell einen Reim machen auf diesen Fehler? Auf Stackoverflow wurde ich auch nicht schlauer.

Vielen Dank im Voraus.
 

DefconDev

Bekanntes Mitglied
Das der Client irgendwelchen Schwachsinn als UserAgent setzt.


Verbindungsprobleme? Kommen die ueberhaupt am Server an?
Ok, schade. Dachte das wäre endlich ein Hinweis.

Ich kann es dir nicht sagen. In unseren Logs lässt sich Serverseitig nichts finden. Lediglich auf der Client-Seite finden wir etliche Requests Refused Exceptions. Aber warum die Refused werden , ich habe keine Ahnung.
 

DefconDev

Bekanntes Mitglied
Java:
Genauer bitte, was genau bekommt ihr da?

org.apache.http.conn.HttpHostConnectException: Connection to http://unserServerort refused
     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:193)
     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:170)
     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:366)
     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:569)
     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:494)
     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:472)
     at de.x.mobile.connection.AbstractNetworker.performGet(AbstractNetworker.java:75)
     at de.x.mobile.connection.Networker.loadSingle(Networker.java:266)
     at de.x.mobile.connection.Networker.loadServerTime(Networker.java:385)
     at de.x.mobile.connection.Module.downloadServerTime(Module.java:647)
     at de.x.mobile.connection.Module.access$000(Module.java:95)
     at de.x.mobile.connection.Module$DownloadSchedule.run(Module.java:148)
     at android.os.Handler.handleCallback(Handler.java:873)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:193)
     at android.os.HandlerThread.run(HandlerThread.java:65)
 Caused by: java.net.ConnectException: failed to connect to /x.x.x.x (port x) from /:: (port x): connect failed: ETIMEDOUT (Connection timed out)
 

DefconDev

Bekanntes Mitglied

Jw456

Top Contributor
targetSdkVersion 22
Würde ich nicht machen.

Du willst somit die Permission sparen vom User.
Nicht gut.

Ich würde da auch 28 benutzen.
Und im Code auf Änderungen zu vor Versionen eingehen.
 
Zuletzt bearbeitet:

DefconDev

Bekanntes Mitglied
targetSdkVersion 22
Würde ich nicht machen.

Du willst somit die Permission sparen vom User.
Nicht gut.

Ich würde da auch 28 benutzen.
Und im Code auf Änderungen zu vor Versionen eingehen.
Ja, da sind ne Menge Altlasten im Code. Aber die User sind mit unseren Handys unterwegs die nur einen Zweck haben. Es ist auch keine App für den Playstore.

Probiere jetzt die Sachen im Stackoverflow-Threas aus. Was mich wundert, dass es zum größten Teil funktioniert für gefühlt 80 % der Handys desselben Modell.
 

DefconDev

Bekanntes Mitglied
Also der Test mit den zusätzlichen XMLs für die legacy apache http lib hat auch nichts gebracht. Beim Testen auf unserer Live-Umgebung ist uns aufgefallen, dass die Verbindung mit schwachem 4G/3G problematisch ist, aber auf einem weniger ausgelasteten Server in unserer Testumgebung konnten die Rest-Call regelmäßig abgesetzt werden, fast unabhängig davon ob 4G oder 3G.

Wir tappen weiter im Dunkeln. Beim Debuggen fühlt es sich so an, als würde die Verbindung nicht gehalten werden können, wenn sie zu schwach ist. Aber da fehlt mir persönlich das KnowHow, welche Faktoren da eine Rolle spielen können. Vielleicht sind die Settings fürs OS beim TCP Protokoll komplett anders auf Live als auf Stage, das kann man noch prüfen aber welche Settings außer der Tomcat Server könnten da einen Einfluss nehmen?
 

LimDul

Top Contributor
Firewalls? Die war zumindest bei uns für gedroppte Verbindungen mal verantwortlich.

Worst Case wäre, dass man auf TCP/IP Ebene wirklich die Pakete protokolliert und dann schaut, wo sie verloren gehen. Wenn man das nur gegen die Live Umgebung nachstellen kann, wird das natürlich aufwendig. Insbesondere, da man auf dem Client (Handy) vermutlich schwer die ausgehenden Pakete filtern kann.

Da es laut Log ein Timeout ist und du zusätzlich schon es etwas auf schwache Verbindungen eingrenzen kannst, mal ein Traceroute zum live server vom Handy absetzen und schauen ob der anders läuft als bei der Testumgebung. Evtl. geht irgendwo unterwegs was verloren.
 

DefconDev

Bekanntes Mitglied
Firewall lassen wir schon bereits prüfen. Betrifft auch nur zwei Ports.

Also ein Timeout ist laut Client Log nicht, sondern ein Refused. Aber beim Debuggen fühlt es sich halt an, wie bereits geschrieben, als wäre die Verbindung nicht stabil genug und der Server deswegen die Verbindung zum Client wieder zurückweist. Aber reines Bauchgefühl was nicht wirklich weiter hilft.

Das mit dem Pakete protokollieren, werde ich unserem Admin Mal fragen. Danke.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G apache httpClient Problem. Netzwerkprogrammierung 5
M Apache HTTPClient Server log ausgeben ?! Netzwerkprogrammierung 3
N HTTP Apache 4.2.1 HttpClient 302 nach Login und auf den weiteren Seiten. Netzwerkprogrammierung 5
R Apache HttpClient File Download? Netzwerkprogrammierung 3
M need org.apache.commons.httpclient.* Netzwerkprogrammierung 8
K Login via apache httpclient Netzwerkprogrammierung 4
T HTTP Apache Commons HttpClient Bibliothek Netzwerkprogrammierung 2
lordcarlos HTTP Apache HttpClient, post und login. Netzwerkprogrammierung 2
T Apache HttpClient & Default Headers Netzwerkprogrammierung 9
T apache HTTPClient einloggen Netzwerkprogrammierung 2
Q HTTPS mit Apache HttpClient Netzwerkprogrammierung 4
C HTTPS mit Apache HTTPClient Netzwerkprogrammierung 1
M org.apache.commons.httpclient.HttpClient Netzwerkprogrammierung 3
Nuiton FTP Apache Commons: FTPClient und Sicherheit Netzwerkprogrammierung 9
N FTP FTP Client invalid IPv6 address (Apache Commons Net API) Netzwerkprogrammierung 6
D Apache Mina Serial: Error Netzwerkprogrammierung 2
0 Apache Commons File Object bekommen Netzwerkprogrammierung 4
W HTTP Apache HttpComponents und GZIP Netzwerkprogrammierung 2
F Apache commons net SFTPClient Netzwerkprogrammierung 5
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
M Apache Solr doc & pdf Upload Netzwerkprogrammierung 8
C apache commons net ftp bei upload unvollständig Netzwerkprogrammierung 3
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
R Apache Mina - Hilfestellung Netzwerkprogrammierung 32
D Apache Mina und GWT Servlet Netzwerkprogrammierung 4
N SFTP apache keine Verbindungaufbau möglich Netzwerkprogrammierung 6
dayaftereh Fragen zu Apache Mina? Netzwerkprogrammierung 5
Kr0e Apache Mina -> await() Netzwerkprogrammierung 30
B Tomcat Apache Server Netzwerkprogrammierung 6
J org.apache.http.auth.NTCredentials Netzwerkprogrammierung 2
A org.apache.commons http client in Netbeans einbinden Netzwerkprogrammierung 3
Kr0e Apache Mina Problem Netzwerkprogrammierung 2
G apache von außen zugänglich machen Netzwerkprogrammierung 5
1 Upload problem! org.apache.commons.net.ftp Netzwerkprogrammierung 3
S Google Search Webservice mit Apache Axis realisieren? Netzwerkprogrammierung 2
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
S Applet und JWS auf Apache-Axis (SOAP) Netzwerkprogrammierung 8
J Antwort eines Soaprequests parsen mittels org.apache.soap Netzwerkprogrammierung 2
B Via Java Datei zu PHP-Script auf Apache hochladen Netzwerkprogrammierung 4
A http request per socket an apache server Netzwerkprogrammierung 5
B HttpClient - Server (Jetty) - getInputStream - EOF Netzwerkprogrammierung 3
B HttpClient Netzwerkprogrammierung 2
M HTTP HTTPClient Authentication - Quickr Server Netzwerkprogrammierung 8
H Java 1.4 HTTPClient Content von PutMethod Netzwerkprogrammierung 4
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
M Dateiupload mittels HttpClient Netzwerkprogrammierung 3
F FileUpload mit commons HttpClient Netzwerkprogrammierung 17
H HTTP Login mit POSTMethod und httpClient Netzwerkprogrammierung 5
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
H Bilder mit HttpClient hochladen Netzwerkprogrammierung 3
T HttpClient - Senden via Post Netzwerkprogrammierung 12
M httpclient kann sich nicht auf asp.net Seite anmelden Netzwerkprogrammierung 2
M Seltsame Fehlermeldung (httpclient) Netzwerkprogrammierung 6
A Jakarta Commons HTTPClient: Mehrere Requests gleichzeitig Netzwerkprogrammierung 2
E HttpClient und return Problem Netzwerkprogrammierung 6
K Bad Request nach Form Login in Jakarta HttpClient Netzwerkprogrammierung 4
J Jakarta HTTPClient Netzwerkprogrammierung 5
D Problem beim holen einer PHP-Seite via HttpClient Netzwerkprogrammierung 19
S mit HttpClient Seiteninhalt lesen Netzwerkprogrammierung 8
P jakarta.HttpClient: Port bei GetMethod angeben Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben