Skocz do zawartości
bonifacy1980

Serwis hosting video - streaming, problem, RAID

Polecane posty

Witam.

Posiadam serwis hostingujący filmy. Średnia wielkość jednego filmu to około 1gb.
Filmów jest około 9000 plików.
Posiadam serwer z oferty ovh:
CPU Intel® Xeon® CPU D-1540 @ 2.00GHz
Rdzenie : 16
Cache : 12288KB RAM 2x 16384MB Dyski 3 x 2000 GB Płyta główna X10SDV-TLN4F
Hardware raid. Dyski ustawione na raid 0. Przepustowość 3gbps upload.
Osób średnio online w jednej sekundzie 60-400 zależy od pory dnia.

Od początku stycznia odnotowałem znaczy spadek wydajności serwera.
Był kupiony serwer w konfiguracji tej samej tylko, że raid software.
Zużycie procesora nagle zaczęło rosnąć do 80-100% na rdzeń, load average wynosił 12-20.
Filmy zaczęły się bardzo długo ładować, cięły się, ogólnie nie do życia.

Po wyczytaniu, że może to powodować duże obciążenie przez raid software zakupiłem nowy serwer z opcją hardware raid.

Teraz serwer od strony procesora jest ok. Zużycie w godzinach szczytu wynosi max 20%. Ale load average rośnie do rozmiarów rzędu 30 w ostatnich 15 minutach.

Jak jest około 90 osób online to już ma ciężko. Kiedyś to było nie do przyjęcia.
Co jest najdziwniejsze w starej konfiguracji zużycie dysku na iotop wynosiło w szczytach do 150 mb/s.

Podczas gdy teraz nie przeskakuje przez więcej niż 80 mb/s. I zaczyna się generować kolejka.
Dyski są ustawione w raid 0 i jest ich 3 sztuki dlatego suma prędkości powinna się kumulować.
Podczas testów prędkość całej infrastruktury wynosiła 482 mb/s na wyłączonym streamowaniu.
Podczas testów prędkość całej infrastruktury wynosiła 7 mb/s na włączonym streamie. Przy czym zużycie na iotop wynosiło max 80 mb/s podczas trwania testów.

Czyli tak jakbym posiadał infrastrukturę która osiąga prawie 500 mb/s a podczas działania używa maksymalnie 1/5 mocy. Może to być problem konfiguracji serwera.
Debian 7.10 (Wheezy) , nginx
Dowiedziałem się że winą może być włączone cache dysków i kontrolera raid.
Niestety nie udało się do końca ich wyłączyć dlatego nie mogę sprawdzić do końca.
Jeżeli ktoś zna to proszę o komendy na wyłączenie cache dysków i kontrolera raid.

Kontroler raid: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05)

Każda wskazówka będzie pomocna!
Pozdrawiam!

 

post-44131-0-45513700-1485879578_thumb.png

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Normalne - dysk musi czytac bardzo duzo plikow na raz a nie jeden duzy, i z 500MB/s robi sie kilkanascie MB/s. Mozesz sprobowac podbic opcje readahead w page cache i moze sie poprawic.

 

Moze sie okazac ze jedynym rozwiazaniem bedzie zmiana serwera na taki z wieksza iloscia dyskow.

 

Jak wyglada "iostat", "top" i "free"?

 

 

Edit

 

Pytanie jeszcze jak serwujesz te pliki? Normalnie przez apache/nginx czy przechodzi to jeszcze przez jakis parser PHP czy cos?

Edytowano przez Kszysiu (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Rozumiem, że ma problemy z dużą ilością odczytów na raz, ale poprzedni serwer z taką samą konfiguracją , takimi samymi dyskami tylko że z software raid radził sobie o wiele lepiej. A hardware raid jednak powinien wciągać go nosem :) Zużycie procka było większe, ale osiągał te 150mb/s lekko. Tylko że był tam inny raid ustawiony, nie pamiętam jaki. Teraz jest raid 0 co powinno powodować zwiększenie szybkości a tu takie coś.

Na tym serwerze leżą tylko pliki video. Lecą przez nginx bezpośrednio. Nic więcej, domeny i konwertowanie idą po innych serwerach.

Edit: Jednak leci przez skrypt php + ngnix.
Tylko że wcześniej nie było problemów na innym serwerze. Teraz na tym nowym świeżym coś jest źle skonfigurowane albo spaprane.

Pozdrawiam.

post-44131-0-74780600-1485888733_thumb.png

post-44131-0-92575000-1485888733_thumb.png

post-44131-0-12750000-1485888734_thumb.png

Edytowano przez bonifacy1980 (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tylko że był tam inny raid ustawiony, nie pamiętam jaki. Teraz jest raid 0 co powinno powodować zwiększenie szybkości a tu takie coś.

może raid1 wcześniej był?

To nie jest tak, że przy raidzie0, każdy plik, film odczytuje z tych 3 dysków? Oczywiście zależy od stripe size, ale skoro to duże filmy..

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Przeciez widac ze jest iowait... Czyli pewnie dyski...

 

Moze po prostu ilosc materialu sie zwiekszyla i sie w cache nie miesci?

 

Albo wiecej ramu, albo dorzucic ssd i jakis cache odczytow zrobic...

 

Readahead moze pomoc mi sie wydaje...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

może raid1 wcześniej był?

To nie jest tak, że przy raidzie0, każdy plik, film odczytuje z tych 3 dysków? Oczywiście zależy od stripe size, ale skoro to duże filmy..

Możliwe, ale czy by lepiej działał z raid 1 a nie 0 ?

 

Stripe size wynosi 256 KB.

 

Znalazłem tabelkę od LSI raid gdzie są rekomendowane ustawienia i jeżeli się nie mylę przy streamowaniu i ustawieniu raid 0 stripe size powinien wynosić 256 kb w górę a co z cache raid? Powinien być włączony czy nie? Zapis wyłączony a odczyt włączony?

 

A co z raidem dyskowym? Czy już mylę pojęcia?

 

 

Przeciez widac ze jest iowait... Czyli pewnie dyski...

 

Moze po prostu ilosc materialu sie zwiekszyla i sie w cache nie miesci?

 

Albo wiecej ramu, albo dorzucic ssd i jakis cache odczytow zrobic...

 

Readahead moze pomoc mi sie wydaje...

Ilość materiału właśnie w dodatku się zmniejszyła, bo na poprzednim raidzie osiągnąłem 95% zajętości dysku, pomyślałem ,że to w tym tkwi problem i zacząłem czyścić, zeszło do 84%, a po przeskoczeniu na ten serwer jest 54%.

 

Czyli nie wyłączać cache ?

post-44131-0-28997200-1485944224_thumb.png

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Na szybko dorzucić ramu ;)

Na OVH to nie takie proste albo nawet niemożliwe :x

A nie mogę zmienić przez następne 20 dni na inny serwer bo 2000 PLN pójdzie się gilać.

 

Ale też czy jest potrzebny?

Na htop przy bardzo malutkim ruchu zużycie wynosi ~800 MB na 32 GB.

 

:/

post-44131-0-38668400-1485945036_thumb.png

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

1. zamiast screenow to kopiuj zawartość konsoli i wrzucaj w znaczniku code

 

2. free pokazuje, że cała pamięć jest zużyta na cache

 

3. daj nam 'iostat 1 10 -x'

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

1. zamiast screenow to kopiuj zawartość konsoli i wrzucaj w znaczniku code

 

2. free pokazuje, że cała pamięć jest zużyta na cache

 

3. daj nam 'iostat 1 10 -x'

 

Ok.


avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,11    0,00    1,85   10,64    0,00   87,41

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             280,53     35785,76       107,28 7923577195   23752904

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,20    0,00    1,30    5,20    0,00   93,30

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             258,00     33152,00         0,00      33152          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,13    0,00    1,50    6,40    0,00   91,97

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             313,00     40064,00         0,00      40064          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,13    0,00    1,76    8,43    0,00   89,67

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             318,00     40384,00         0,00      40384          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,19    0,00    1,61    7,54    0,00   90,65

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             301,00     39396,00         0,00      39396          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1,03    0,00    2,82    4,62    0,00   91,53

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             251,00     32268,00         0,00      32268          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,20    0,00    2,31    5,35    0,00   92,15

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             321,78     41314,85         0,00      41728          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,13    0,00    2,93    8,26    0,00   88,68

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             350,00     45052,00         0,00      45052          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,13    0,00    1,94    7,63    0,00   90,30

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             290,00     37196,00         0,00      37196          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,06    0,00    1,87   10,66    0,00   87,40

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             316,00     40748,00         0,00      40748          0

Tak może być?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To jest iostat -x ? bo u mnie -x ma trochę więcej pozycji

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 20.00 20.00 607.00 154.00 12288.00 39.69 1.40 0.95 28.80 0.03 1.57 98.40
Edytowano przez Kszysiu (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To jest iostat -x ? bo u mnie -x ma trochę więcej pozycji

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 20.00 20.00 607.00 154.00 12288.00 39.69 1.40 0.95 28.80 0.03 1.57 98.40

 

Aj wybacz, pomyłka nastąpiła. Już powinno styknąć.


avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,11    0,00    1,85   10,62    0,00   87,42

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,01     0,33  279,60    0,90 35781,52   106,94   255,89     9,49   33,82   33,92    2,46   2,40  67,31

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,13    0,00    1,75    6,79    0,00   91,33

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,00     0,00  282,00    0,00 36352,00     0,00   257,82     2,73    9,33    9,33    0,00   2,50  70,40

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,13    0,00    1,49    5,96    0,00   92,42

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,00     0,00  265,00    0,00 33920,00     0,00   256,00     2,62   10,17   10,17    0,00   2,70  71,60

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,13    0,00    1,42    5,18    0,00   93,26

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,00     0,00  268,00    0,00 34248,00     0,00   255,58     2,34    8,81    8,81    0,00   2,51  67,20

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,00    0,00    1,43    6,03    0,00   92,55

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,00     0,00  255,00    0,00 32768,00     0,00   257,00     2,62   10,31   10,31    0,00   2,85  72,80

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,13    0,00    1,89    5,27    0,00   92,72

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,00     0,00  273,00    0,00 34884,00     0,00   255,56     2,27    8,31    8,31    0,00   2,61  71,20

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,26    0,00    1,87    3,81    0,00   94,06

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,00     0,00  221,00    0,00 28544,00     0,00   258,32     1,75    7,96    7,96    0,00   2,37  52,40

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,07    0,00    1,77    7,55    0,00   90,61

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,00     2,00  285,00    2,00 36736,00    16,00   256,11     3,16   11,01   11,09    0,00   2,69  77,20

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,07    0,00    1,57    6,03    0,00   92,33

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,00     0,00  296,00    0,00 37856,00     0,00   255,78     2,52    8,38    8,38    0,00   2,19  64,80

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,20    0,00    3,01    5,82    0,00   90,97

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,00     0,00  278,00    0,00 35704,00     0,00   256,86     2,40    8,76    8,76    0,00   2,60  72,40

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

wg mnie zamęczone dyski...

Wyjścia:
1. więcej ramu
2. cache na ssd
3. więcej mniejszych dysków
4. może zwiększenie długości kolejki ncq?
5. ustawienie cache optymalnie dla odczytów (readahead, można wyłączyć writeback)
6. może raid 1 zamiast raid0?
7. może warto spróbować przeprowadzić jakąś optymalizację w skrypcie?
8. modlitwa

może po prostu dwa mniejsze dedyki? może nie da się tego po prostu zrobić w tych pieniądzach...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To ja Ci jeszcze podrzucę lekturę: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/pdf/Performance_Tuning_Guide/Red_Hat_Enterprise_Linux-6-Performance_Tuning_Guide-en-US.pdf

 

Obadaj czy masz I/O scheduler na deadline'a ustawiony (jest ogromna różnica między defaultowym CFQ) i standardowo ustaw noatime, nodiratime żeby niepotrzebnie nie siekać po dyskach.

 

Edit: Zapomniałem jeszcze wspomnieć żebyś poczytał o TCQ/NCQ i ustawieniu odpowiedniej długości /sys/block/sdX/queue/nr_requests tak jak Krzysiu sugerował:

http://yoshinorimatsunobu.blogspot.com/2009/04/linux-io-scheduler-queue-size-and.html

Edytowano przez Insider (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Takie "tuningi" wile tu nie pomogą, jedynie zmiany w sprzęcie czyli albo dyski albo wspomniany ram.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

możesz dokupić drugi mały dedyk i po NFS udostępniać pliki - zawsze rozłożysz ruch na więcej dysków, a masz chyba vrack 10g w tym serwerze?

Zawsze jakieś kreatywne rozwiązanie, jak opłaciłeś na serwer z góry - z tego co kojarzę w OVH jeszcze chyba możesz w ciągu 14 dni zwrócić serwer i powinni ci chyba kasę oddać.

I kupić kilka mniejszych

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×