Internal server error web

Salve a tutti,

da diversi anni sviluppo app web con realbasic/xojo
che compilate cgi o stand alone su server linux funzionano molto bene.
C’ per una cosa che mi tormenta,
sessioni aperte da determinati ip anche se solo aperte sul browser senza far nulla
a volte mandano in crash l’intera app e generano Internal Server Error.
Questo chiude le sessioni di tutti gli utenti e richiede il riavvio della app.
L’errore si verifica random, imprevedibile e non si riesce a replicare volutamente,
per giorni si pu lavorare senza problemi, in altri il crash pu verificarsi pi vollte.
Testato su pi macchine e con tutti i browser, da alcuni ip, prima o poi il crash arriva…

Non un problema di sovraccarico, si verifica anche con una sola sessione aperta.
Non si verifica “mai” dalla maggior parte degli ip ma solo da alcuni e sempre gli stessi.

Qualcuno di voi si mai imbattuto in questo fastidioso problema?

Grazie
Enzo

se risolvi, fammi sapere, ho un problema analogo

Pu essere un’intestazione nella richiesta

ad esempio ci sono delle classi di IP (clienti di un provider) che quando accedono alla mail hanno le intestazioni di richiesta modificate con l’aggiunta di parametri scritti in modalit non standard. Alcuni mail server hanno un controllo strict su questi parametri e rifiutano la connessione.

Se riesci ad identificare gli IP e riprodurre il problema anche con un’applicazione ridotta, prova ad inviare un feedback.

Grazie Antonio,

come ultimo tentativo mi sono messo a monitorare i ping 8.8.8.8 da uno degli ip incriminati.
Si nota che ne perde diversi, anche a blocchi di 2/3 (cosa che non mi era mia capitato di vedere).

Mi sarei aspettato che una cosa del genere influisse sulla sessione, non su tutta la app.
Se basta che un utente abbia problemi di linea a bloccare tutto allora un casino…

Non dovrebbe farlo!
Puoi provare uno dei tool per simulare la cattiva connessione (latenza, drop etc) e vedere cosa succede. In genere quando questo succede sempre un qualche elemento “globale” che ne viene influenzato.

Intanto vedo se trovo qualcosa a riguardo.

sai che credo sia il mio problema, ho notato che i dati arrivano con lentezza, strabiliante, non solo noto spesso che ogni tanto l’intero ip muore per qualche secondo, come posso monitorare questo per averne certezza matematica

Forse… ma avendo provato la tua app, credo che sia una combinazione di accessi a risorse condivise (file, record etc), visto che sono riuscito a mandarla giù con 2 browser dalla stessa postazione.
Non appena levi il timer… forse posso vedere meglio.

timer tolto

[quote=210712:@Antonio Rinaldi]Forse… ma avendo provato la tua app, credo che sia una combinazione di accessi a risorse condivise (file, record etc), visto che sono riuscito a mandarla giù con 2 browser dalla stessa postazione.
Non appena levi il timer… forse posso vedere meglio.[/quote]

Mi pare che vada sensibilmente meglio

qualcuno potrebbe ospitare una versione da capire se il mio provaider a far cagare o altro…

sai che penso Rinaldi, che non si rinnova la sessione e va in timeout

Mandami in messaggio privato un link dropbox con una versione compilata in Linux (meglio se zippata) e posso provare a metterla sul mio server.

Bravo Matteo!

Inviati i dati, dovremmo solo organizzarci per il database che mysql

Ciao ragazzi e buongiorno, allora forse ho trovato il vero problema, che non il codice, ma la rigidit dell’oggetto webMap, esempio, in molte schede faccio uso di questa classe MapView in questo modo, o passando indirizzo direttamente da field di ricerca, non so che cosa combina la classe WebMapLocation, ma spesso questa va in crash per i fatti suoi, esempio se scrivo "Hotel Milano, Milano tutto e perfetto, ma se scrivo “Hotel exe Paris Centre, paris” questo va in crash, pur esistendo hotel

Hotel Milano

Hotel exe Paris Center

  if Session.IOActivity = "Super Admin" or Session.IOActivity = "Admin" then
    self.Button_edit.Enabled = true
  else
    self.Button_edit.Enabled = false
  end if
  
  dim value() as string = Split(self.G_Record(Row),"|")
  
  self.TextArea_content.Text = value(2)
  
  self.TextField_phone.Text = value(3)
  self.TextField_phone.HelpTag = "Phone"
  
  self.TextField_mobile.Text = value(5)
  self.TextField_mobile.HelpTag = "Mobile"
  
  if value(6) <> "" then
    self.Button_info.Enabled = true
    self.Button_info.HelpTag = value(6)
  end if
  
  try
    self.ImageView1.URL = value(8)
  Catch
    self.ImageView1.URL = "http://www.humanequality.eu/001/images/humanequaliy.png"
  end try
  
  Try
    if self.mp <> nil then
      self.MapViewer1.RemoveLocation(mp)
    end if
    self.mp = new WebMapLocation
    self.mp.Address = value(10) + " , " + Value(12) + " " + value(13)
    self.MapViewer1.AddLocation(self.mp)
    self.MapViewer1.GoToLocation(self.mp)
  Catch
  end try
  if self.TextField_full_name.Text = "" Then
    self.TextField_full_name.Text = "Hotel Milano, Milano"
  end if
  
  if wl <> nil then
    self.MapViewer1.RemoveLocation(wl)
  end if
  
  try
    wl = new WebMapLocation
    wl.Address = self.TextField_full_name.Text
    self.MapViewer1.AddLocation(wl)
    self.MapViewer1.GoToLocation(wl)
  Catch
    MsgBox("Andress not valid")
  end try
  dim s as String = self.SearchField1.Text
  
  if s = "" then return
  
  dim wml as new WebMapLocation
  dim wml1 as new WebMapLocation
  
  try
    wml1.Address = self.TextField5.Text
    wml.Address = s
    
    
    if wml.Address <> "" Then
      self.TextField1.Text = wml.Address
      self.TextField2.Text = wml.Latitude.ToText
      self.TextField3.Text = wml.Longitude.ToText
      self.TextField4.Text = "Distanza da " + self.TextField5.Text + " " + wml.DistanceTo(wml1).ToText + " km"
      self.TextField7.Text = str(TextField6.Text.Val * wml.DistanceTo(wml1) )
      self.TextField10.Text = str( TextField7.Text.Val / TextField8.Text.Val )
    end if
    
    self.MapViewer1.GoToLocation(wml)
    self.MapViewer1.AddLocation(wml)
    self.MapViewer1.AddLocation(wml1)
    
  Catch
    MsgBox "Error location"
    return
  end try
  try
    dim mapaddress as new WebMapLocation
    mapaddress.Address = self.Label_address.Text + " , " + self.Label_city.Text + " " + self.Label_state.Text
    self.MapViewer1.AddLocation(mapaddress)
    self.MapViewer1.GoToLocation(mapaddress)
  catch
    MsgBox "Error location"
  end try

certo magari dovrei farmi una classetta per non ripetere tutti questi codici inutili, ma volevo farlo poi, proverei ad eliminare tutte le mappe, magari se qualcuno ha un idea di come sostituirle come obj di xojo, perch non solo va in bomba ma rallenta notevolmente tutti i processi. sar un idiozia, ma mi succede, ora infatti in molte occasione dato che ho messo tutto sotto try, consigli ne avete da passare!

Il problema lo risolvi semplicemente utilizzando una propriet computata.
Quando vuoi risolvere la “location”:

dim wml as new WebMapLocation try wml.Address=<la tua stringa di indirizzo> Catch wml=nil end try //mp una propriet computata di tipo WebMapLocation, crei la propriet normale e poi la converti in computata mp=wml

Nella propriet computata lasci per il get il codice presente di default e per il set:

  if mmp<>nil then MapViewer1.RemoveLocation mmp
  mmp = value
  if mmp<>nil then
    MapViewer1.AddLocation mmp
    MapViewer1.GoToLocation mmp
  end if

grazie, non ci avevo pensato