http - CPU 绑定(bind)非常简单的应用程序 : which stack for high traffic?

标签 http redis rabbitmq

很高兴认识!

我有一个非常基本的应用程序,我目前正在使用 LAMP 堆栈运行它,它执行以下操作:

-接受HTTP请求

-操纵 cookie

-从(本地)Redis 中拉取数据

-从apache_geoip获取请求国家

-使用 http 请求和所有相应的请求/cookie/redis 数据做一些非常基本的业务逻辑

-发布消息到(远程)rabbitMQ

-输出 <1kb 的 HTML

到目前为止,我使用此设置得到了“OK”结果,处理了大约 800 个请求/秒的峰值,平均响应时间大约为 150 毫秒。 我目前需要对此进行改进以处理更多请求和响应时间。 我想知道是否有人可以就更适合这项任务的堆栈提出建议?

我知道这个问题有点遥不可及,除了测试各种语言/网络服务器之外,我不知道如何确定它。 任何帮助都将非常受欢迎

谢谢

最佳答案

800rps 一点也不差,但是你没有指定你的环境和硬件,所以如果没有它,没有人能给你任何具体的建议,而不是一般的建议,比如“缓存 geoip 结果”等(但它可能虽然没用)。

您必须分析您的应用程序以查看瓶颈,只有在做出决定之后,应用程序级别是否存在任何问题,或者您只需要将第二台(或第 N+1 台)机器添加到您的集群(如果有)。

附言:

如果您使用的是 Apache 和 php(并且没有硬依赖),请尝试用 nginx 和 php-fpm 替换它们。

有时添加简单的 HTTP 缓存机制有助于显着减少请求数量(因此您的服务器不会每次都做猴子工作,只会处理“唯一”请求)。

关于http - CPU 绑定(bind)非常简单的应用程序 : which stack for high traffic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23071081/

相关文章:

perl - 重用LWP :UserAgent?

http - netcat - 接收包含多个文件的多部分 TCP/HTTP 响应

http - 如何使用格式为 "filter[name]=foo"的查询字符串参数进行 curl

从项目安装 Composer 时出现 Php fatal error

php - 如何在 laravel 中同时拥有集群和非集群 redis 连接

python-3.x - celery 错误 : result. get(timeout=5) 超时,即使 result.status 是 SUCCESS

java - servlet 中的图像无法用浏览器打开

java - redis pipeline默认执行一次多少条命令?

java - Spring -jms。如何自定义rabbitmq的broker url?

httprequest - RabbitMQ HTTP API 调用aliveness-test 返回404,但其他调用有效