因业务处理时间比较大,故此采用了tcp 服务端与客户端的模式,客户端定时向服务端发送处理请求,服务端启动多个进程去处理业务逻辑。
假设:
12:00 客户端A发起请求告知服务端处理业务A 。
12:10 客户端A再次发起请求告知服务端处理业务A 。
但业务逻辑比较多,可能10分钟还没结束,12:00那次还没完,请问当收到12:10的请求,服务端是怎么处理的?(多进程的情况下。)
是等待12:00结束处理还是例外的一个空闲进程直接处理呢。
顺便说一句业务A里面需要用到curl 与sleep
请大神告知,目前自己的测试结果还是会造成阻塞。
1、如果系统调度认为当前进程能忙的过来,即前后两个请求落入服务端同一个进程,假设当消耗15分钟才处理完第一个请求,那么会在15分钟后才执行下一个请求,因为单进程内请求是串行执行的;反过来则后续的请求则会落入第二个进程,这个时候两个请求可以看做是并行执行的;
2、关于 curl 部分的阻塞,已经原贴回复过了: https://wenda.workerman.net/question/4791
3、业务代码里不要使用 sleep , sleep 是系统调用会阻塞当前进程并挂起;
好的,感谢,这边去掉sleep测试测试看看。