webman 并发测试 用postjson 压力测试工具跟ab,都是秒响应 2k或者8k 比方说 写了一个 index() 方法 ,里面只输出 helloworld, 压力测试的时候可以直接秒响应2k 另外写一个test方法 curlpost 去请求 (上面这个index方法) ip:8787/index 的时候 这个时候 压力测试 响应才2个 或者几十个 ,不会秒响应,但是他会在我的超时时间内 慢慢请求,而且请求会超时,不懂了,希望有大哥能指点一下
你这 别人也看不懂呀,你截个图 啥的
我理一下啊 就是 两台服务器 A B 都部署了webman 压力测试 2000个请求直接到 A 然后 由 A 在转向B
我直接压力测试B 是没有问题的 ,2000个请求全部响应,
然后压力测试 2000个请求 A A 用curl post方式 去请求B 这个时候 压力测试的结果就响应超时了,可能就几个十几个响应
还会请求超时, 请问这是哪里的原因
进程自己请求自己死锁了
你居然能听懂他说的啥,我是完全听不懂呀
后半段看懂了,就是左手掰右手去给左手捉痒 前半段2K8K看不懂
像极了精神病患者的自我拉扯
我的基础不够,希望大哥们指点一下
死循环了啊,都在等待对方响应····
没有死循环把 ,因为单个请求是可以响应的
比如A B公用10个进程对外服务,A发起curl请求B,如果同时发来10个A请求,这时每个进程都同时发起一个curl阻塞请求B接口,那么这10个进程就都进入阻塞状态不能响应任何其他请求。因为10个进程都被A接口占用完了,那么没有进程可以处理B请求,导致死锁。
单个没问题是因为始终有空闲进程能提供curl响应
所以 是curl的问题吗
还有一个问题,我需要发送很多个请求 给别人 现在用的 redis 队列,但是这个好像是排队进行了的,如果我一次性要处理很多个是要用多个队列来消耗吗
最简单的A网络调用B改成A内部函数调用B就好了。 redis队列一个队列可以启动多个消费者消费,不一定要创建多队列。
可是AB 是两台服务器,不可以内部调用呢 只能通过请求 B ,,redis 我再去看下文档
哥哥这个redis多个消费者消费 是 改哪个参数 吗,文档我没找到
<?php return [ ...这里省略了其它配置...
'redis_consumer' => [ 'handler' => Webman\RedisQueue\Process\Consumer::class, 'count' => 8, // 可以设置多进程 'constructor' => [ // 消费者类目录 'consumer_dir' => app_path() . '/queue/redis' ] ]
]; 是这个么 , 只有8个
用 AsyncTcpConnection
你的意思是:
class IndexController { public function index(){ return "hello world";} public function test(){return curl index();} }
// curl index() 返回很快,test() 很慢?
index 很快 ,curl index 很慢
我想问你,你的代码是不是我写的这个样子。
不是 ,实际上 有 两台服务器
用 AsyncTcpConnection 同步等待请求可能超时。
没试过,得试了才知道
你这 别人也看不懂呀,你截个图 啥的
我理一下啊 就是
两台服务器 A B 都部署了webman
压力测试 2000个请求直接到 A 然后 由 A 在转向B
我直接压力测试B 是没有问题的 ,2000个请求全部响应,
然后压力测试 2000个请求 A A 用curl post方式 去请求B 这个时候 压力测试的结果就响应超时了,可能就几个十几个响应
还会请求超时, 请问这是哪里的原因
进程自己请求自己死锁了
你居然能听懂他说的啥,我是完全听不懂呀
后半段看懂了,就是左手掰右手去给左手捉痒
前半段2K8K看不懂
像极了精神病患者的自我拉扯
我的基础不够,希望大哥们指点一下
死循环了啊,都在等待对方响应····
没有死循环把 ,因为单个请求是可以响应的
比如A B公用10个进程对外服务,A发起curl请求B,如果同时发来10个A请求,这时每个进程都同时发起一个curl阻塞请求B接口,那么这10个进程就都进入阻塞状态不能响应任何其他请求。因为10个进程都被A接口占用完了,那么没有进程可以处理B请求,导致死锁。
单个没问题是因为始终有空闲进程能提供curl响应
所以 是curl的问题吗
还有一个问题,我需要发送很多个请求 给别人 现在用的 redis 队列,但是这个好像是排队进行了的,如果我一次性要处理很多个是要用多个队列来消耗吗
最简单的A网络调用B改成A内部函数调用B就好了。
redis队列一个队列可以启动多个消费者消费,不一定要创建多队列。
可是AB 是两台服务器,不可以内部调用呢 只能通过请求 B ,,redis 我再去看下文档
哥哥这个redis多个消费者消费 是 改哪个参数 吗,文档我没找到
<?php
return [
...这里省略了其它配置...
]; 是这个么 , 只有8个
用 AsyncTcpConnection
你的意思是:
class IndexController {
public function index(){ return "hello world";}
public function test(){return curl index();}
}
// curl index() 返回很快,test() 很慢?
index 很快 ,curl index 很慢
我想问你,你的代码是不是我写的这个样子。
不是 ,实际上 有 两台服务器
用 AsyncTcpConnection 同步等待请求可能超时。
没试过,得试了才知道