Многопоточность с использованием CURL увеличивает использование процессора

У меня есть следующие случаи

  • mysql: 1 экземпляр (8 ГБ ОЗУ)
  • nginx: 4 экземпляра

Я назначаю задания для 4 экземпляров nginx из экземпляра mysql, используя POST-запрос curl. В этом случае использование процессора MySQL увеличивается.
Я не хочу никакой загрузки процессора в MySQL. Mysql не должен ждать ответа от nginxes.

Mysql Script для назначения заданий:

$query =  "SELECT id from tablename where is_active = '1'";
$result = mysql_query($query);
$total_jobs = mysql_num_rows($result);
if($total_jobs > 0)
{
$counter = 0;
while ($row = mysql_fetch_array($result)) {

// Assign next job
// Update job_last_pulled_at_for_processing for picked ids
$now = date("Y-m-d H:i:s");

$job_id_url = urlencode($row['id']);
$passwd_comm = urlencode(base64_encode("abc"));
$data_part="job_id=".$job_id_url."&passwd_comm=".$passwd_comm;

$ssh_cmd ="curl -k POST --silent --max-time 3 --data '".$data_part."' http://".$nginx_instance.":8080/admin-alert.php > /dev/null &";
echo "\nExecuting => CURL\n";
exec($ssh_cmd);

$counter++;
sleep(5);
if($counter>=12)  {
GOTO ENDCASE; // If more 12 jobs every min then all of them will not get calculated every min.
}
}
} else {
echo "\nNo Job Eligible to assign";
}

Скрипт Nginx для выполнения задания:

$input_data = $_POST;
$job_id = urldecode($input_data['job_id']);
$passwd_post = base64_decode(urldecode($input_data['passwd_comm']));

if($passwd_post != "abc"){
echo " Wrong Params "; exit;
}

if(!empty($job_id)) {
exec("php /var/www/cron_files/update_master_value_cron.php ".$job_id." > /dev/null & ");
}
echo " Completed "; exit;

Если я посылаю неверный пароль (abcxyz) из CURL-запроса, то mysql cpu не увеличивается. Но для правильного пароля т.е. чтобы завершить работу в nginx, то Mysql CPU увеличивается до 100%.

Почему Mysql увеличивается, если задания выполняются nginxes?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector