【问题标题】:How to managment over 100k access for a php file in my vps?如何在我的 vps 中管理超过 100k 的 php 文件访问?
【发布时间】:2016-04-06 12:43:57
【问题描述】:


我有一个超过 500k 成员的应用程序,他们的所有用户每 1 小时从服务器获取一次数据。
我的所有数据都存储在一个 php 文件中,设备使用 JSON 获取它。
这是我的简单 php 文件:

<?php

$response = array();
header('Content-type: application/json');
$response["AppInf"] = array();
    $product = array();
    $product["apptitle"] = "string1";
    $product["apps"] = "string2";
    $product["apps2"] = "string3";
    $product["apps4"] = "string4";
    $product["idapp"] = "stringid";
     array_push($response["AppInf"], $product);
    $response["success"] = 1;
    echo json_encode($response);
    ?>

但是当访问服务器中超过 15k 的用户时,我的 cpu 负载增长到 100%。 我有一个很好的 vps 服务器,带有 64g 内存和氙气 cpu。
任何人都可以帮助我管理和解决这个问题???

【问题讨论】:

  • 你在使用 PHP 来生成完全静态的 json 文件?
  • 对于 HTTP 服务器的传入负载率应该是每秒请求数或这样。仅仅表达“15k 用户”是没有意义的。
  • @Mat 是的,我的文件是完全静态的。
  • @HamidrezaSoleimani 如何解决?
  • @MostafaRostami 使用 Apache Benchmark (ab) 等标准基准测试工具,您可以获得并发级别测试所需时间、每秒请求数、每个请求的时间以及可以作为调整系统基础的统计数据。

标签: php performance caching optimization vagrant


【解决方案1】:
  1. 如果您的内容真的像您的示例中那样是静态的:将内容存储在静态文件中并使用缓存。如果您的内容对于至少一组用户来说是相同的,那么您只需计算一次所需的结果并存储数据以供以后检索

  2. 考虑使用像 varnish 这样的反向代理将负载从您的 Web 服务器转移到另一台服务器

  3. 如果可能:不要让所有用户同时获取数据。为拉取数据的时间添加一些随机偏移量。

【讨论】:

  • 感谢您的回复:是的,我的内容是静态的 如何使用兑现?2-我无法将负载转移到另一个网络服务器。3-如何在时间上添加随机偏移量?
猜你喜欢
  • 2015-06-29
  • 2017-06-16
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2011-06-25
  • 2011-01-09
  • 1970-01-01
相关资源
最近更新 更多