使用方法引用的是:http://doc.workerman.net/faq/async-task.html
高并发下,workerman把繁重的任务交给本机另一个任务进程异步处理。
workerman发送数据,发送的$task_data里带有发送时间的时间戳:
$task_data = time();
$task_connection->send(json_encode($task_data));
任务进程接受数据:
$task_worker->onMessage = function($connection, $task_data)
{
$task_data = json_decode($task_data, true);
// receive_time 在高并发下有时候会有十几秒
$receive_time = time() - $task_data;
}
任务进程接到任务的时候,当前时间和发送时间相减,发现高并发情况下,有时候会出现一连串十几条的任务,接受数据延迟达到7、8秒,甚至十几秒,可能会是什么原因呢。
系统到达极限慢是正常的,cpu忙不过来了。加硬件或者服务器
感谢回答。应该不是CPU的问题,CPU的占用率在并发高的时候没跑满,一次发送到任务进程几百条数据的时候,有时候会出现有一连串的几条数据接收延迟达到十几秒,其余数据都是秒接,也不平滑
任务进程处理任务也要时间的,处理不过来就排队了,延迟也就是正常的事情。
多开进程试下没准会好一些
@1459:考虑到这一点了,测试时进程从16个加到了上百个还是会有延迟出现,系统优化也做了,感觉也有可能是阿里云的linux系统的问题
解决了吗?我也是同样的问题
你用的是redis-queue吗,考虑下redis内存优化试试呢