cPanel + ffmpeg

Ticketa

Registered
Привет,
имам сървър, който използва контролен панел cPanel, а него имам инсталиран и ffmpeg.

Като цялата целият сървър има 1 проект и той е с видео съдържание.

Някой можели да ме насочи как да фиксна проблема с "употребата" на Memory Usage на ffmpeg? Имам предвид, че ако 1 посетител качва 10 видеа в един и същи момент конвертирането на ffmpeg направо блокира сайта защото Memory usage скача и сайта извежда: бяла празна страница

Някакви насоки как да се справя с досадния проблем?

RAM: 32
SSD: 4TB
Processor 1x Intel Xeon E-2274G
Dell R240
 
И според мен трябва да изолираш обработката, иначе тя ще яде целия ресурс на машината, събаряйки всеки друг сървис на нея.

При нас такъв проблем трудно се решава, ако не се прави някоя виртуалка да изолира процесите. Често се случва и при базите, когато има криви куерита за обработка или някакви бездарно направени импорти да правят SQL на пастет, реално всичко друго като сървиси започва да бози, и в някои случа забива машината.
 
Някакви препоръки за обработката как да е направя на отделния сървър , така че родителския да знае на кого принадлежи Х видеото? Мога да ползвам SSH , но това ли ще е най-добрия вариант?
 
Някакви препоръки за обработката как да е направя на отделния сървър , така че родителския да знае на кого принадлежи Х видеото? Мога да ползвам SSH , но това ли ще е най-добрия вариант?
Здравей. Колегите правилно са те ориентирали да разделиш нещата на отделни машини, защото иначе мъката е голяма. Относно обработката, най-удобно се прави със синхронна база данни между двете машини. Вдига се една репликация на базата между двете машини и реално каквото имаш на мастъра ще го имаш и на подчиненият сървър, като реално по този начин ще имаш всичко налично. Вторият ти вариант е да вдигнеш втора връзка с отдалечена база с данни, в която да пишеш и вземаш данни от нея.
 
Някакви препоръки за обработката как да е направя на отделния сървър , така че родителския да знае на кого принадлежи Х видеото? Мога да ползвам SSH , но това ли ще е най-добрия вариант?
Тази връзка е според мен е много подходяща, ако нямаш някакви Firewalls или други такива protection инсталации или лимити, които да режат връзката. Може да се направи една вируалка, която да е отделена и лимитирана, така, че да си се разпростира само и единствено със собствените ресурси, дори на отделно IP.
 
Хм, опитах един трик, който обаче не е работещ =>
Така работеше преди:
$shell = shell_exec("$ffmpeg_b -y -i $video_file_full_path -vcodec libx264 -preset {$pt->config->convert_speed} -filter:v scale=1920:-2 -crf 26 $video_output_full_path_1080 2>&1");


Замяната:
PHP:
                        $server   = "IP_TO_MY_VPS_HOST";
                        $username = "username";
                        $password = "password";

                        $connection = ssh2_connect($server, 22);
                     
                        ssh2_auth_password($connection, $username, $password); // Authenticate with the SSH server
                        $sftp = ssh2_sftp($connection);

                        $command = "$ffmpeg_b -y -i $video_file_full_path -vcodec libx264 -preset {$pt->config->convert_speed} -filter:v scale=1920:-2 -crf 26 $video_output_full_path_1080 2>&1";
                        ///usr/bin/ffmpeg -threads 1 -i '.$thepath .'/audio.mp3 -safe 0 -f concat -i '.$thepath.'/paths.txt -vf "scale=1280:720,setsar=1" -pix_fmt yuv420p -c:a aac -af "volume=-5dB" -c:v libx264 -movflags +faststart '.$fixedtime.' -y '.$output.' 2>&1
                      
                        // Execute a command on the connected server and capture the response
                        $stream = ssh2_exec($connection, $command);
                      
                        // Sets blocking mode on the stream
                        stream_set_blocking($stream, true);
                      
                        // Get the response of the executed command in a human readable form
                        $shell = stream_get_contents($stream);

С връзката чрез SSH2 няма ядове т.е. connection е ОК, но самото конвертиране всякаш не се случва.
 
Последно редактирано:
Аз лично бих си направил някакъв API endpoint към който да правя заявки вместо да използвам SSH. Така ще можеш да си предаваш каквито данни ти трябват към втория сървър и ще имаш много повече контрол над нещата.

На какво е писан проекта? Ако е на Laravel примерно, можеш да направиш Queue worker за да обработваш видеата 1 по 1 и да не товари сървъра.
 

Back
Горе