VPS – timeouty przy monitorowaniu strony

VPS – timeouty przy monitorowaniu strony
K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Cześć,

Mam dwa serwery VPS – jeden w Warszawie, drugi w Berlinie. Oba na razie służą do testów, ale docelowo jeden z nich chcę wykorzystać do monitorowania mojej strony oraz przechowywania kopii zapasowych.
Serwer produkcyjny znajduje się w Polsce. Na obu VPS-ach uruchomiłem prosty skrypt, który co minutę sprawdza dostępność frontendu i backendu strony. Jeśli strona nie odpowiada, skrypt wysyła powiadomienie e-mail. Ustawiłem timeout na 30 sekund.
Zauważyłem, że czas połączenia z serwerem produkcyjnym różni się – VPS w Warszawie łączy się dwa razy szybciej niż ten w Berlinie. Próbowałem różnych ustawień DNS, ale nie wpłynęło to na poprawę sytuacji.
Problem w tym, że VPS w Berlinie coraz częściej wysyła fałszywe powiadomienia o niedostępności strony. Gdy to sprawdzam, serwer w Warszawie nie ma żadnych problemów, a produkcja działa bez zakłóceń. W momencie wysyłania powiadomień żaden z trzech serwerów nie jest obciążony.
Nie mam pomysłu, co może powodować te sporadyczne timeouty na VPS w Berlinie. Może ktoś podpowie, gdzie szukać przyczyny?

AD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 342
1

Brak neta w serwerowni gdzie masz VPSa w Berlinie?

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

@Adin pisałem do nich twierdzą, że net był :)

KE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 761
3

Pokaż ten skrypt. Wysyłasz powiadomienie po pierwszym błędzie? Skoro wszystko działa mimo tego, to może warto zrobić parę prób.

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

@kelog tak wygląda skrypt:

Kopiuj
<?php

echo date('Y-m-d H:i:s') . " Skrypt działa poprawnie!" . PHP_EOL;
$URL = "https://xxxx";
$URL_JAVA = "https://xxxx";
$dns_server = 'xxx';

try {
 
    $curl_output = shell_exec('curl --connect-timeout 30 --max-time 35 --dns-server ' . $dns_server . ' -o /dev/null -s -w "%{http_code} %{time_total}::" "' . >

    $http_code = explode(' ', $curl_output)[0];

    $curl_output_java = shell_exec('curl --connect-timeout 30 --max-time 35 --dns-server ' . $dns_server . ' -o /dev/null -s -w "%{http_code} %{time_total}::" >

    $http_code_java = explode(' ', $curl_output_java)[0];

    if ($http_code != "200" || $http_code_java != "200") {
        $log_message = date("Y-m-d H:i:s") . " ";

        if ($http_code != "200") {
            $log_message .= "Strona $URL nie odpowiada. Kod odpowiedzi: $http_code";
        }

        if ($http_code_java != "200") {
            $log_message .= " Strona $URL_JAVA nie odpowiada. Kod odpowiedzi: $http_code_java";
        }
        
        //wysylka emaila
        
} catch (Exception $e) {
    echo date('Y-m-d H:i:s') . 'Wystąpił błąd: ' . $e->getMessage() . PHP_EOL;
}

?>
BA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 188
3
  1. Monitorowanie popraw sobie tak, żeby zrobić np. 3 próby (3 razy retry połączenia).
  2. Przeanalizuj sobie traceroute z każdego z tych VPNsów do strony oraz z powrotem (prawdopodobnie jakieś łącza międzyoperatorami się przytykają i stąd masz takie problemy).
marian pazdzioch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 789
3

A weź rób jednocześnie pinga do np. google.com to przynajmniej będziesz wiedział że do google.com też się dobić nie może.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.