Pomoc Niekontrolowane zwiechy serwera WWW

Gregor

Systems Admin...
Q's Expert
28 Listopad 2008
212
1
13
18
QNAP
TS-239 Pro II
Ethernet
1 GbE
Witam

Pacjent:
Wersja oprogramowania Firmware: 4.2.6
Model serwera: QNAP 239 Pro II

Od bardzo długiego czasu jestem szczęśliwym posiadaczem QNAPA. Zżyłem się z nim i służy mi doskonale spełniając moje nieduże potrzeby.
Z róznych względów od bardzo długiego czasu nie wgrywałem najnowszego firmware. Ostatni jaki posiadałem to 4.1.5
Wszystko działało cacy i bez problemu :)

Ale jak to w życiu, nic nie trwa wiecznie. Po kilku latach system przysłał mi maila, ze mój dysk nr 2 nadaje się do kosza i go wyłaczył. Pomyślałem, ze kupie dwa dyski nowe, wieksze, lepsze. Tak też uczyniłem. Doszedłem do wniosku też, że to świetny moment, aby jednak się zmusić i zainstalować najnowszy system w wersji 4.2.6

Zrobiłem kopie zapasową danych, kupiłem dyski WD RED 2 TB (2 szt). Postanowiłem nie robić update systemu tylko zainicjowalem Qnapa z nowymi dyskami. Wszystko pieknie i ładnie.
2 dni posiedziałem konfigurując sobie userów, udziały, konfigi itp Skopiowałem dane i pozostało tylko cieszyć się czystym systemem na długie lata.

Jednak mały niepokój wywołują u mnie nieregularne, aczkolwiek częste zwiechy serwera www.

Wszystko chodzi i nagle komunikat ze strony, ze nie udało się nawiązać połączenia.
Zwiechy są co około 15 minut i trwają około 3 minut.
Po tym czasie wszystko wraca do normy.

W tym czasie apache i php nie zgłaszają w logach błedów.
Mam zmienne IP ale ono również się nie zmieniło
Nie jestem jakimś biegłym userem, ale przy próbie wywołania "apachectl start" dostaję info, że serwer jest właczony.

Niestety nie potrafię zdiagnozować tej przyczyny. Nawet nie wiem gdzie głębiej mógłym szukać. Może mam gdzieś w configu włączoną funkcję "zwiecha co 15minut", ale nie mogę jej znaleźć :)

Moze ktoś miał podobny problem i wie jak go usunąć?

Z góry dziękuję za wszelkie sugestie :D
Dodam jeszcze, że gdy strona mieli, mieli i nie może się wczytać to ping do nie j chodzi bardzo ładnie :-(

Żadnych pomysłów?
Pozdrawiam
 
Hej
Dzięki za odzew

Plików .htaccess mam 2 sztuki a w każdym z nich są może 3 linijki.
O jakie logi Ci chodzi?
O error logi czy acces logi? Czy usunąć znaczy wyczyścić je, czy też zatrzymać zapisywanie do nich danych.
Pozdrawiam


ps
w apache conf ustawiłem sobie loglevel na warn, a po każdym resecie jest zmieniane na crit
czy jest jakiś sposób aby to zmienić? strasznie to utrudnia diagnostykę?
Zauważyłem coś takiego, że jestem tego prawie pewien na 100% :)

Zwiechy w połaczeniu ze stroną WWW występują z komputerów, które sa połączone w sieci lokalnej po LAN lub WiFi.

Zdarza się, że odświeżam strone kilka razy i nic (brak połaczenia z serwerem). Odświeżam stronę przez telefon (połaczenie komórkowe) i strona zawsze się wczytuje.
Następnie w pozostałych komputerach też się wczytuje.

Trochę to zagmatwane, ale mam nadzieję, że jasno się wyraziłem.

Naprawde nikt nic nie potrafi mi doradzić? Cokolwiek?
 
Nie mam, ale IP się nie zmienia, więc nie mógłbym się polączyć w ogóle.
W logach Qnapa nic nie ma.

Porównując konfigurację apacha z wersji 4.1 i najnowszej doszły małe zmiany.

Nie było tego:
Kod:
LoadModule headers_module modules/mod_headers.so
<IfModule headers_module>
   Header always append X-Frame-Options SAMEORIGIN
   Header always edit Set-Cookie ^(.*)$ $1;HttpOnly
</IfModule>

LoadModule deflate_module modules/mod_deflate.so
<IfModule mod_deflate.c>
        DeflateCompressionLevel 2
        AddOutputFilterByType DEFLATE text/html text/plain text/xml
        AddOutputFilter DEFLATE js css
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.[0678] no-gzip
        BrowserMatch \bMSIE\s7  !no-gzip !gzip-only-text/html
</IfModule>

LoadModule reqtimeout_module modules/mod_reqtimeout.so
<IfModule reqtimeout_module>
   RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
</IfModule>

Było wcześniej:

Kod:
MinSpareServers 5
MaxSpareServers 10
Teraz jest:
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 64


No i doszło

Kod:
Include /etc/config/apache/extra/apache-fastcgi.conf
a w nim:
Kod:
LoadModule fastcgi_module modules/mod_fastcgi.so
<IfModule mod_fastcgi.c>
ScriptAlias /php.mod_fastcgi /php.mod_fastcgi
FastCGIExternalServer /php.mod_fastcgi -socket /var/run/php-fpm.sock -idle-timeout 600
AddHandler php.mod_fastcgi .php .php3 .php4 .php5 .phtml
Action php.mod_fastcgi /php.mod_fastcgi
<Files php.mod_fastcgi>
   Order deny,allow
   Allow from all
</Files>
</IfModule>


Moze to coś zmienia?
Cała reszta apache.conf wydaje się być taka sama :)


Strasznie ciężko rozwiązać taki problem bo nic nie wiadomo :)
 
Postawiłem serwer na czysto.
Jedyne co doinstalowywalem to optware. Wczesniej też miałem i działało.

Caly czas z tym walczę i w zasadzie jak łączę się z komputera który jest poza sięcią w której jest QNAP (LAN WiFi) to nigdy nie było zwiechy. Natomiast wewnatrz sieci problem się powtarza
W zasadzie potwierdziłem na 100% to co opisalem.

1.Telefon mam połączony po WiFi - strona się nie wczytuje
2. przechodze na LTE - wczytuje się
3. przechodzę ponownie na WiFi - działa

Myslalem, że to moze wina komputerów czy przeglądarek. Poczyścilem cache i historie. Nie pomogło.

Odkryłem jeszcze, że jeżeli na stronie zewnętrznej mam podlinkowane zdjęcia czy pliki to również na kompach znajdujących się w tej samej sieci co QNAP, nie widzę zdjęć a pliku nie mozna pobrać.
Oczywiście poza tym samym LAN czy WiFi dziala bez problemu.

Wygląda na to, że QNAP obraził się na moją sieć lokalną i nie czasami chce współpracować z www;)

Protokoły FTP, SSH, SMB czy AFP działają bez problemu
 
Serwer Web wiesza sie na jakim rodzaju operacji?
Pobieranie wielu plików jednocześnie + download manager dzielący pliki na częsci, czy przeglądanie jakiś stron PHP?

1. Otwórz notatnik i wklej poniższe linijki:
INI:
CustomLog logs/main_log combined
ErrorLog logs/error_log
LogLevel info

2. Zawartość notatnika zapisz w udziale sieciowym Public o dokładnie takiej nazwie: apache-myconfig.conf.
UWAGA! Upewnij się, że plik nie ma rozszerzenia .txt

3. Zaloguj się na serwer za pomocą PuTTY lub innego klienta SSH.

4. Sprawdź czy Twój plik istnieje:
Bash:
cat /share/Public/apache-myconfig.conf
Jeśli zawartość, którą wkleiłeś i zapisałeś do tego pliku wyświetliła się poprawnie, tzn. że możesz przystąpić do kolejnego kroku.

5. Przenieś plik z swoim configiem w jego prawidłowe miejsce:
Bash:
mv -f /share/Public/apache-myconfig.conf /etc/config/apache/extra/

6. Dodaj odniesienie do swojego pliku config w pliku konfiguracyjnym apache:
Bash:
cd /etc/config/apache/

# wczesniej robimy jego backup...
cp /etc/config/apache/apache.conf apache.conf-moj-backup.bak

# dodajemy linie z Includem:
echo -e "\nInclude /etc/config/apache/extra/apache-myconfig.conf" >> /etc/config/apache/apache.conf

7. Zrestartuj serwer Web:
Bash:
/etc/init.d/Qthttpd.sh restart
/usr/local/apache/bin/apachectl restart

8. A teraz nasłuchuj logi - istotne będą te z momentu padnięcia serwera:
Bash:
tail -f {/var/log/messages,/mnt/ext/opt/apache/logs/error_log}
 
Miałem w apache.conf opcję info. Naprawdę nie wywalało tam żadnych błędów.
Podobnie było w php.ini
error logi z apach i php zawierały tylko typowe informacje.
Zmieniałem konfigurację na wszelkie sposoby.

Nie było czegoś takiego jak padanie serwera, bo na komputerach poza siecią lokalną wszystko działało.
Wyglądało to tak jakby czasami (bo nie zawsze) coś odcinało przesył po porcie 80 w sieci lokalnej.

Zresztą w tej chwili to nieistotne.
Przywróciłem system do wersji 4.1.3 (taką miałem wcześniej) i wszystko śmiga poprawnie.
apache.conf i php.ini są w zasadzie bez zmian
Nie wiem co było przyczyną, ale to chyba nie tak powinno wyglądać ;)

Dzięki za pomoc
 
Co utaliłem.

Moja strona to Gregor Travel

Bez problemu mozna na nią wejść spoza mojej sieci lokalnej.
Można też wejść będąc w sieci lokalnej po wpisaniu mojego adresu wewnętrznego serwera czyli np. 192.168.1.10/Katalog_gregortravel/
Mozna też wejść z sieci lokalnej na adres www.gregortravel.com, ale po kilku minutach bezczynności przeglądarka zwraca "Nie udało się nawiązać połączenia"

Jeżeli w tym momencie wejdę na strone spoza sieci lokalnej lub wpisują bezpośrednio 192.168.1.10/Katalog_gregortravel/ w sieci lokalnej wszystko się odblokowuje i znowu bez problemu mogę wejść na www.gregortravel.com będąc w sieci lokalnej



@Silas Mariusz zrobiłem co kazałeś. Ustawiłem LogLevel na debug bo jak jest info to nic się nie dzieje.

Jest 12:10 wyczyściłem logi i robię restart

Kod:
/etc/init.d/Qthttpd.sh restart
/usr/local/apache/bin/apachectl restart

w tym momencie w logach php jest
Kod:
[02-Sep-2017 12:10:13 Europe/Warsaw] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/apache/modules/sqlite.so' - /usr/local/apache/modules/sqlite.so: undefined symbol: php_pdo_unregister_driver in Unknown on line 0
[02-Sep-2017 12:10:13 Europe/Warsaw] PHP Deprecated:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
[02-Sep-2017 12:10:20 Europe/Warsaw] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/apache/modules/sqlite.so' - /usr/local/apache/modules/sqlite.so: undefined symbol: php_pdo_unregister_driver in Unknown on line 0
[02-Sep-2017 12:10:20 Europe/Warsaw] PHP Deprecated:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0

w logach (==> /var/log/messages <==) cisza

a w logach apache (==> /mnt/ext/opt/apache/logs/error_log <==) jest:
Kod:
[Sat Sep 02 12:10:13 2017] [notice] Apache/2.2.29 (Unix) configured -- resuming normal operations
[Sat Sep 02 12:10:13 2017] [information] Server built: Mar 13 2015 02:55:39
[Sat Sep 02 12:10:13 2017] [debug] prefork.c(1031): AcceptMutex: sysvsem (default: sysvsem)
<br />
<b>Warning</b>:  PHP Startup: Unable to load dynamic library '/usr/local/apache/modules/sqlite.so' - /usr/local/apache/modules/sqlite.so: undefined symbol: php_pdo_unregister_driver in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Deprecated</b>:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Warning</b>:  PHP Startup: Unable to load dynamic library '/usr/local/apache/modules/sqlite.so' - /usr/local/apache/modules/sqlite.so: undefined symbol: php_pdo_unregister_driver in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Deprecated</b>:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Warning</b>:  PHP Startup: Unable to load dynamic library '/usr/local/apache/modules/sqlite.so' - /usr/local/apache/modules/sqlite.so: undefined symbol: php_pdo_unregister_driver in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Deprecated</b>:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Warning</b>:  PHP Startup: Unable to load dynamic library '/usr/local/apache/modules/sqlite.so' - /usr/local/apache/modules/sqlite.so: undefined symbol: php_pdo_unregister_driver in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Deprecated</b>:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Warning</b>:  PHP Startup: Unable to load dynamic library '/usr/local/apache/modules/sqlite.so' - /usr/local/apache/modules/sqlite.so: undefined symbol: php_pdo_unregister_driver in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Deprecated</b>:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in <b>Unknown</b> on line <b>0</b><br />
[Sat Sep 02 12:10:20 2017] [notice] SIGHUP received.  Attempting to restart
apache: Could not reliably determine the server's fully qualified domain name, using 192.168.7.13 for ServerName
[Sat Sep 02 12:10:20 2017] [notice] Apache/2.2.29 (Unix) configured -- resuming normal operations
[Sat Sep 02 12:10:20 2017] [information] Server built: Mar 13 2015 02:55:39
[Sat Sep 02 12:10:20 2017] [debug] prefork.c(1031): AcceptMutex: sysvsem (default: sysvsem)


wchodze na stronę www.gregortravel.com
w logach apache pojawia się tylko:
Kod:
[Sat Sep 02 12:13:29 2017] [debug] mod_deflate.c(706): [client 83.23.213.23] Zlib: Compressed 95207 to 5356 : URL /index.php, referer: [URL='http://www.gregortravel.com/']Gregor Travel[/URL]
w logach php cisza

czekam........jest 12:28

wchodze na stronę www.gregortravel.com - "nie udało się nawiązać połączenia", na drugim kompie i ipadzie (wszystko w sieci lokalnej) to samo
wchodzę na 192.168.1.10/Katalog_gregortravel/ - działa
ponownie wchodzę na www.gregortravel.com - działa

i tak można powtarzać bez końca

w logach apache doszło:
Kod:
[Sat Sep 02 12:28:50 2017] [debug] mod_deflate.c(706): [client 192.168.7.2] Zlib: Compressed 95207 to 5360 : URL /mój_lokalny_adres/index.php
[Sat Sep 02 12:28:50 2017] [debug] mod_deflate.c(706): [client 83.23.213.23] Zlib: Compressed 95207 to 5357 : URL /index.php, referer: [URL='http://www.gregortravel.com/']Gregor Travel[/URL]


Dodam jeszcze, że w sytuacji zwiechy nie ma znaczenia czy na kompie lokalnym wpisze adres hosta czy moje zewnetrzne IP. Efekt ten sam. Strona się nie ładuje.
Wiem, że wyglada to trochę jak problemy z DNS ale tylko lokalnie. Zmieniałem i ustawiałem dns zarówno na routerze i qnapie.
Bez efektów.


jakieś pomysły?
Pozdrawiam
W oczekiwaniu na dobrą duszę próbuję dalej:

Zresetowałem router do ustawień fabrycznych. Przekierowałem tylko port 80 - bez zmian
Wziąłem jakiś inny router jw - bez zmian


Zaczynam popadać w paranoję bo jedyną rzeczą jaka jest inna w moim zestawieniu to dyski HDD
W tej sytuacji nie wstydzę się zadać tego pytania :) "Czy inne dyski HDD mogą powodować mój problem?"

Pozdrawiam
Jeszcze dla jasności:

z komputera lokalnego wchodzę na swoją stronę - nie działa
z konsoli daję:
Kod:
 ping www.gregortravel.com
PING 7greg.dyndns.org (83.23.207.243): 56 data bytes
64 bytes from 83.23.207.243: icmp_seq=0 ttl=64 time=0.543 ms
64 bytes from 83.23.207.243: icmp_seq=1 ttl=64 time=0.599 ms

7greg.dyndns.org - to mój adres w usłudze ddns

z konsoli daję:
Kod:
traceroute www.gregortravel.com
traceroute to 7greg.dyndns.org (83.23.207.243), 64 hops max, 52 byte packets
1  dhz243.neoplus.adsl.tpnet.pl (83.23.207.243)  0.820 ms  0.520 ms  0.480 ms

jak widać wszystko działa

Po wpisaniu do przeglądarki
83.23.207.243 - nie wczytuje się


Wystarczy, że z komputera spoza sieci lokalnej odświeżę swoją stronę i wszystko zaczyna działac
 
OK dzięki. Zerknę.
Najbardziej mnie zastanawia fakt, że przez wiele lat działało wszystko bez problemu. I zmiana nastąpiła po aktualizacji Qnapa.
Może to tylko przypadek, ale dlaczego router działał, a teraz stroi fochy?
Rozumiem, że w tej sytuacji wymiana routera rozwiąże sprawę?
Po czym poznam w sklepie, że router będzie miał reverse NAT? Czy może dzisiaj już mają wszystkie?

Mój Linksys ma co prawda kilka lat, ale żeby od razu był taki zły? :)
 
OK dzięki. Zerknę.
Najbardziej mnie zastanawia fakt, że przez wiele lat działało wszystko bez problemu. I zmiana nastąpiła po aktualizacji Qnapa.
Może to tylko przypadek, ale dlaczego router działał, a teraz stroi fochy?
Rozumiem, że w tej sytuacji wymiana routera rozwiąże sprawę?
Po czym poznam w sklepie, że router będzie miał reverse NAT? Czy może dzisiaj już mają wszystkie?

Mój Linksys ma co prawda kilka lat, ale żeby od razu był taki zły? :)
Windows/system32/drivers/etc/hosts i dopisz na końcu pliku:
Kod:
domena_mojej_strony.pl 192.168...

Gdzie podajesz adres IP lokalny swojego serwera.
Kod:
ipconfig /flushdns
ping domena_mojej_strony.pl

.. albo postaw serwer DNS w lanie wskazujący lokalny adres serwera pod tą domena


Wysłane z mojego SM-G950F przy użyciu Tapatalka
 
Akurat jestem "makowy" ale już wcześniej zmieniałem /etc/hosts i było ok. Pozostał wtedy problem urządzń mobilnych gdzie ciężko zmienić plik hosts.

Reasumując na ten moment działa takie rozwiązanie (nie wiem czy to prawidłowo, ale działa):
Na Qnapie mam wbite DNS googla
Na routerze w DNS wpisałem adres Qnapa
Jeżeli komputer lokalny używa DHCP nic nie robię.
Jeżeli ręcznie przypisuję adres IP to w DNS wpisuję adres routera



Tak czy siak nadal nie rozumiem dlaczego to działało przez kilka lat i po aktualizacji softu w Qnapie przestało.
Może ten Qnap to czysty przypadek, ale nie zmienia to faktu, że działało i przestało.
Nie zmieniałem żadnych ustawień na routerze ani na komputerach lokalnych.

Mam nadzieję, że tendencja działania się utrzyma :)
Dziękuję za pomoc
Pozdrawiam
 
Reasumując na ten moment działa takie rozwiązanie (nie wiem czy to prawidłowo, ale działa):
Na Qnapie mam wbite DNS googla
Na routerze w DNS wpisałem adres Qnapa
Jeżeli komputer lokalny używa DHCP nic nie robię.
Jeżeli ręcznie przypisuję adres IP to w DNS wpisuję adres routera
Absolutnie nic z tego nie rozumiem. Ale jak działa to jest okay.
 
Wiadomo, że jak działa to najwazniejsze. Ale też sam lubię wiedzieć "dlaczego"? :)

Jak Ty nie rozumiesz to ja dwa razy :)

No i cały czas nie wiem jaki router miałbym kupić, aby pozbyć się tego problemu.

Tak czy siak dzieki za pomoc.
Pozdrawiam
 
No i cały czas nie wiem jaki router miałbym kupić, aby pozbyć się tego problemu.
Absolutnie żaden.

Nie wiem czy dobrze rozumiem, ale dostawałeś się na serwer po zewnętrznym adresie/domenie tak?
Wyobraź sobie, że wypychasz gateway'em zapytanie po to, żeby zaraz nim wrócić kiedy się odbije od Twojego operatora i wraca do Twojego serwera, a ten ponownie wysyła gateway'em do Twojego operatora odpowiedź a ta wraca ponownie do Ciebie.

Za każdym razem generujesz transfer dwa razy.
Poprawne rozwiązanie to domeny i DNS'y lokalne, lub dwa interfejsy IP. DNS'y załatwiają sprawę.
 
No chyba jest tak jak mówisz.

Oprócz mojej strony mam jeszcze pod inną domeną postawią inną domenę, która powiedzmy służy do wpisaywania czegoś do bazy.

Logując się z dowolnego miejsca na świecie używam jej i super działa.
Będąc natomiast w domu nie chcę się zastanawiać, że właśnie jestem w sieci lokalnej i aby coś dopisać muszę użyć adres lokalny. Chcę wpisać w ptzrglądarkę nazwę mojej domeny i jej używać.

Niezależnie czy jestem w domu czy gdziekolwiek indziej?

Czy tylko jak tak robię i tak bym chciał? Nie chce mi się wierzyć, że posiadacze serwerów inaczej wchodzą na swoje strony będąc w sieci lokalnej i poza nią.
No chyba, że się mylę.
Szkoda, że tak mało ludzi się tu wypowiada, bo zakładam, że każdy ma jakiś serwer :)
 
Niezależnie czy jestem w domu czy gdziekolwiek indziej?

Czy tylko jak tak robię i tak bym chciał? Nie chce mi się wierzyć, że posiadacze serwerów inaczej wchodzą na swoje strony będąc w sieci lokalnej i poza nią.
No chyba, że się mylę.
Lokalny serwer DNS na np. Mikrotiku.
upload_2017-9-3_16-18-59.png


Local network:
upload_2017-9-3_16-30-9.png


Zapytanie przy użyciu zewnętrznego serwera DNS od Google 8.8.8.8:
upload_2017-9-3_16-34-51.png


Ponowne zapytanie używając zew. Google DNS, ale po włączeniu reguły w lokalnej sieci w Mikrotiku:
Kod:
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=53 protocol=tcp to-addresses=\
    10.100.200.1 to-ports=53
add action=dst-nat chain=dstnat dst-port=53 protocol=udp to-addresses=\
    10.100.200.1 to-ports=53
.. która wymusza w lokalnej sieci korzystanie wyłącznie z lokalnego serwera DNS - czyli przekierowuje każdy ruch na porcie 53 (protokół DNS) do siebie:
upload_2017-9-3_16-33-45.png

- zwraca również lokalny adres serwera. Zatem użytkownik sieci LAN nie ma możliwości korzystania z innych serwerów DNS niż ten lokalny uruchomiony na routerze, który jest wierną kopią (cachem) google + custom statycznymi wpisami.
 

Użytkownicy znaleźli tą stronę używając tych słów:

  1. sprawdź zawartość plików