我们在使用公共基础设施的时候,比如redis, 如果有一个人执行了大操作,会导致其他所有使用方都被hang住。
我开了一个脑洞,如果操作系统能在时间片切换处支持一些钩子,那么当进程换出、换入时,我就可以统计下当前命令执行了多久时间,如果超过了预先设定的阈值则包装一个异常返回值,然后将pc指针指向一个合适的位置,下次执行将异常返回跳过当前命令的后续逻辑.
感觉是可行的,但是肯定是有困难的地方。 不然redis肯定会支持的。
想问下大家,首先有没有这样的机制存在.
如果存在,redis是基于什么考虑没有添加如上的功能呢?
ps:
看到mysql可以通过配置max-execution-time来限制readonly select的执行时间。 不知道它是怎么实现的? 有了解的同学可以说说嘛...
Linux可以用kprobe跟踪进程切换,例如像下面这样记录全部PID的执行时间