- 主题:boost/asio的协程调试非常麻烦,有没什么法子
怎么说呢?原本构建大并发的服务器系统,当然是要能够充分发挥多核系统的性能,肯定是先有多线程需求的吧。
单线程也可以对付大量链接,但是发挥不了多核的性能。
【 在 dajun 的大作中提到: 】
: 弱问是业务需要读完再做其他耗时的操作才选择多线程的吗?
: 没用过boost.asio,猜测他应该是能单线程应对大量连接的吧(非协程)
: 发自「今日水木 on SunOS 5.6」
--
FROM 221.218.60.*
【 在 poocp 的大作中提到: 】
: 总之你这个模型被DoS的代价比较低,所以我建议你简化。
:
我的服务器方案,由主线程创建线程池,context等等,线程池由epoll调度。
主线程守护监听socket。由select监听。收到事件取一个context,然后用这个context 进行accept,并记录时间戳,,把这个context投入epoll,交给线程池处理。
在DDOS攻击期间,context可能被迅速耗尽,这是主线程取不出来context,就进入一个循环,不断进行timeout检测,检测发生timeout的contex,收拾出来垃圾再继续处理。
被accept的socket,必须在一定时间内对口令,超时被踢。
已经完成认证的socket就在epoll的事件循环中完成它们的任务,不受ddos攻击的影响。期间accept是有卡顿的,不过几秒钟后就会有大批的无效socket被踢,accept可以迅速恢复。
不知道你们的单线程协程是怎么抵抗DDOS攻击的。
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*
DDoS攻击包有两种,一种是连接后不发信息,占死你有限连接数。
另一种是进行https协议。
这两种攻击包都可以对付。
【 在 ylh1969 的大作中提到: 】
: 我的服务器方案,由主线程创建线程池,context等等,线程池由epoll调度。
: 主线程守护监听socket。由select监听。收到事件取一个context,然后用这个context 进行accept,并记录时间戳,,把这个context投入epoll,交给线程池处理。
: 在DDOS攻击期间,context可能被迅速耗尽,这是主线程取不出来context,就进入一个循环,不断进行timeout检测,检测发生timeout的contex,收拾出来垃圾再继续处理。
: ...................
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*
还一个办法,做通用工具,好容易调好一个,以后到处用。
【 在 Algoquant 的大作中提到: 】
: 报错了,指出了哪行报错,但是压根儿不知道是从哪个上次函数调用结束resume回来的,也就是不知道导致此报错的可能前面步骤是哪执行的(前面做了什么操作导致 线程恢复的时候 用到的资源不存在或者被释放了),调式相当痛苦,日志异步的,好像也没打印同步到出错的线程时执行了哪些操作?
: 有没经验分享一下?
--
FROM 221.218.60.*