我有以下实例
我使用curl POST请求从mysql实例为4个nginx实例分配作业。在这种情况下,mysql cpu的使用量增加了。 我不希望任何CPU加载到mysql。 Mysql不应该等待来自nginxes的响应。
分配作业的Mysql脚本:
$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;
如果我从CURL请求mysql cpu发送错误密码(abcxyz)没有增加。但是对于正确的密码即。要在nginx完成工作,那么Mysql cpu增加到100%。
如果nginxes执行作业,为什么Mysql cpu会增加?