我有一些服务器,我们在上面运行很多东西。它们已经经常承受过多的负载并且容易崩溃。
我有一个 Ruby 程序,它是另一个 Ruby 程序的包装器。包装器生成一个线程,该线程运行主 Ruby 脚本,该脚本调用另一个可能需要 10-20 秒才能返回响应的服务,因此它没有主动处理。它对每个参数都执行此操作,因此在最坏的情况下,它一次执行 60 个。
我认为这不会引起太大问题,因为线程毕竟在等待 IO,但是创建 60 个运行其他 Ruby 脚本的线程似乎会造成损失,经常超时或占用服务器。我想那里有一些开销?也许我没有考虑到 Linux 必须在内部为每个 bash 和 Ruby 实例做什么?
我会认为自己是一个 linux 新手,因为很多内部结构对我来说仍然很神奇。有人可以解释为什么我的方法很愚蠢,我最好将自己限制在 10 个线程或在创建线程的循环中延迟第二次吗?创建 bash 环境以在 Ruby 中运行外部命令有多少开销?我最好用几个命令连续创建命令以减少开销吗?
提前致谢