У меня есть следующие случаи
Я назначаю задания для 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?
Задача ещё не решена.
Других решений пока нет …