PHP Web服务优化和测试方法

时间:2014-01-16 07:44:00

标签: php sql-server

我正在使用PHP的Web服务访问MSSQL数据库,并且有一些关于处理大量请求的问题。

  1. 我实际上并不知道是什么构成了“高流量”,我不知道我的服务是否会遇到“高流量”,但这方面的优化很大程度上归功于服务器处理速度和数据库访问速度?

  2. 目前,当请求发送到服务器时,我会执行以下操作:

    • 打开数据库连接
    • 流程申请
    • 返回数据

    无论如何,我可以在多个请求中“缓存”此数据库连接吗?只要同时处理每个请求,数据库就会保持有效。

  3. 我可以存储用户会话ID并限制特定会话中每小时的请求数量吗?

  4. 如何创建'虚拟'客户端以向Web服务器发送请求?我想我可以只是垃圾邮件发送请求在for循环或什么?更好的方法?

  5. 感谢您的任何建议

1 个答案:

答案 0 :(得分:1)

  1. 您永远不知道什么时候出现高流量。您的搜索引擎排名,博客撰写您的网络服务帖子或任何其他不可预测的随机事件可能会导致高流量。你最好准备自己扩大规模。通过向上扩展,我并不主要意味着增加更多处理能力,而是首先优化代码。常见的性能问题是:

    • 未经优化的SQL查询(您真的需要实际获取的所有数据吗?)
    • 过多的SQL查询(尝试永远不会在循环中执行查询)
    • 未经优化的数据库(检查索引)
    • 事务安全性(您的事务是否快速?请记住,在调用数据库事务时需要同步所有传入的请求。如果您有很多请求,这很容易导致服务速度变慢。)
    • 不必要的数据库调用(如果您的访问权限是只读的,请尝试缓存信息)
    • 您前端的不必要数据(用户是否真的需要您提供的所有数据?您的服务是否提供了比您的前端使用的更多数据?)
  2. 当然你可以缓存。您确实应该缓存只读数据,这些数据在每次请求时都不会更改。有一个有用的blogpost on PHP caching techniques。您可能还需要考虑所选框架的缓存包或使用独立的php缓存库。

  3. 您可以限制服务使用,但我不建议通过会话ID,IP地址等来执行此操作。更新这些很容易,然后您的保护失败。如果您有经过身份验证的用户,那么您可以像Google一样限制每个帐户的请求(对每个用户使用所有公开服务使用API​​密钥)

  4. 要进行HTTP加载和性能测试,您可能需要考虑像Siege这样的工具,它正是您所期望的。

  5. 我希望能回答你所有的问题。