很多时候人们会在他们(优化和表现相关)的问题和谈话中谈论"重负荷".
我试图在典型服务器上的常规Web应用程序(以SO及其相当小的基础架构为例)中对每个分钟的请求进行量化,假设它们立即返回(以简化和获取数据库速度)超出等式).
我正在寻找一个名义上的数字/范围,而不是'CPU最大值'或类似的地方.粗略的近似值很大(例如> 5000/min).谢谢!
我正在开发一款多人 HTML5 游戏,该游戏使用 jQuery 轮询服务器以获取游戏状态。目前,我每 2000 毫秒使用 .ajax 调用查询服务器,以给人实时更新的印象。我真的没有推送太多数据……主要只是 x/y 位置和一些角色属性……只有少数玩家在我的游戏实例中还活着。
服务器本身是一个共享托管服务器,我想在开发这个游戏时尽量保持我的 CPU 命中率尽可能低(并在未来将它移到更高功率的东西上)。
这是我当前轮询服务器以获取数据的方法。欢迎任何和所有建议,因为服务器加载对我来说是一个新领域。
$.ajax({
type:'GET',
url:"controller.php?a=player-info",
dataType:'json',
success: function(data){
//parse data
}
});
....
setInterval(getPlayerInfo,2000);
Run Code Online (Sandbox Code Playgroud)
我应该提到的一件事是,由于这是在共享服务器上,我不能有自由运行的进程来打开与(即 Node.js)的连接。
我使用的代码从网站获取100个项目并将其插入数据库,如果该项目存在则更新该记录.它每分钟都作为一个cron作业运行.它运行多达50000个产品.
该脚本运行良好,产品导入成功.现在的问题是服务器和MySql加载.我的服务器支持说它需要几乎50%的资源,他们需要禁用该脚本.
我尝试谷歌检查解决方案,发现加载文件是比mysql_query插入和更新更好的选择.因此,我计划在服务器上的txt文件中编写所有查询,并在完成后使用加载文件将其导入db.
这是一个好方法吗?或者它也采取相同的服务器负载?我想在继续之前了解专家的决定.请帮忙.谢谢
使用Redis经历了非常高的响应延迟,在使用info
命令时无法输出信息redis-cli
.
此服务器处理来自大约200个并发进程的请求,但它不存储太多信息(至少据我们所知).当服务器响应时,该info
命令报告使用的内存大约20 - 30 MB.
在top
服务器上运行时,在高响应延迟期间,CPU使用率徘徊在95-100%左右.
造成这种行为的可能原因是什么?
我正在编写一个我想经常运行的计划任务.
问题是,如果服务器遇到高流量负载,我不希望运行此任务.
还有什么方法可以从java获取free/total/max内存来试图找出这个任务是否应该继续?
你如何计算PHP/apache的服务器负载?我知道在vBulletin论坛中显示的是服务器负载,0.03 0.01 0.04
但对于一般的乔来说这是不可理解的.所以我想到了1-100百分位的规模.我想显示一个从DIV读取的服务器加载视觉:
$load = $serverLoad*100;
<div class=\"serverLoad\">
<div style=\"width: $load%;\"></div>//show visual for server load on a 1-100 % scale
</div>
<p>Current server load is $load%</p>
</div>
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何检测服务器负载.是否可以将此服务器负载转换为百分位数?我不知道从哪里开始.愿有人请帮帮我吗?
谢谢.
我正在构建一个基于Web的系统,它将承载高负荷图像的负载和负载,并且它们将可供出售.当然我永远不会显示高分辨率图像,而是在浏览时人们只能看到低分辨率的水印图像.目前的工作流程如下:
PHP脚本处理高图像上传,当图像上传时,它会自动调整为低分辨率图像和缩略图图像,并且两个文件都保存在服务器上(不添加水印).
当人们浏览时,页面显示图像的缩略图,点击时,它会放大并显示带有水印的低图像.目前,每当打开低位图像时,我都会动态应用水印.
我的问题是,正确的方法是什么:
1)我是否应该使用缩略图保存低级图像的第二个副本,只有在第一次访问时?我的意思是如果有人访问图像,我会动态添加水印,然后显示图像并将其存储在服务器上.如果存在水印副本,则下次访问相同图像时只显示wm副本,否则即时应用水印.(如果更改了watermark.png,只需删除带水印的图像,它们将被重新创建为已访问).
2)我应该像现在一样继续使用水印.
我最大的问题是PHP之间的差异有多大file_exists()
,并且为图像添加水印,例如:
$image = new Imagick();
$image->readImage($workfolder.$event . DIRECTORY_SEPARATOR . $cat . DIRECTORY_SEPARATOR .$mit);
$watermark = new Imagick();
$watermark->readImage($workfolder.$event . DIRECTORY_SEPARATOR . "hires" . DIRECTORY_SEPARATOR ."WATERMARK.PNG");
$image->compositeImage($watermark, imagick::COMPOSITE_OVER, 0, 0);
Run Code Online (Sandbox Code Playgroud)
所有低图像都是1024x1024,JPG,质量设置为45%,并且删除了所有不必要的滤镜,因此低图像的文件大小约为40Kb-80Kb.
它在某种程度上与这个问题有关,只是规模和情景有点不同.
我在专用服务器(Xeon E3-1245v2)cpu,32 GB RAM,2 TB存储),该网站整体流量不大,但它不时有巨大的峰值.当图像发布时,我们每小时可以获得几千次点击,人们可以通过图像浏览,下载,购买等等.因此,在正常使用情况下,我确信即时生成是正确的方法,我有点担心关于穗期.
需要提一下,我正在使用ImageMagick库进行图像处理,而不是GD.
感谢您的输入.
UPDATE
没有一个完整的完整解决方案的答案,但这是好的,因为我从来没有寻找过.这是一个艰难的决定,哪一个接受谁和谁给予赏金.
@ Ambroise-Maupate解决方案很好,但它继续在PHP上完成这项工作.
@Hugo Delsing建议使用Web服务器来提供缓存文件,降低对PHP脚本的调用,这意味着使用更少的资源,另一方面,它不是真正的存储友好.
我将使用2个答案的混合合并解决方案,转发CRON作业以删除垃圾.
谢谢你的指示.
它会更快包含一个javascript文件并在html中输出它作为a <script>
或只是使用该src
属性并让浏览器发出另一个请求?
简单地输出它而不是让浏览器发出另一个请求显然意味着更少的请求和可能更少的服务器负载,但它是否使它更快?包含文件并输出它们不会让浏览器缓存它们.
查询:
UPDATE
node as n
right join content_type_product as c
on n.nid = c.nid
right join uc_products as p
on p.nid = n.nid
set
c.field_product_price_eur_value = p.sell_price * 0.0961,
c.field_product_price_zar_value = p.sell_price * 1,
c.field_product_price_gbp_value = p.sell_price * 0.0844,
c.field_product_price_usd_value = p.sell_price * 0.1305,
n.changed = now()
where n.type = 'product'
Run Code Online (Sandbox Code Playgroud)
对于那些尚未弄明白的人,此查询将Drupal站点上的所有NODES更新为所有具有最新货币的NODES.我的问题是,如果您有以下问题,此查询有多危险:
如果这个命令每小时执行一次?
我需要知道我是否应该每隔几个小时执行一次这个查询,或者我是否应该将其限制为一次只更新500个等等.
将执行此操作的站点将具有多个节点条目,并且此查询为每1个产品更新了2行.所以,如果我有大量的节点,我不确定这会给服务器带来多大的压力.
server-load ×9
php ×4
resources ×2
ajax ×1
coldfusion ×1
concurrency ×1
cpu-usage ×1
drupal ×1
drupal-nodes ×1
image ×1
include ×1
jquery ×1
mysql ×1
performance ×1
redis ×1
save ×1
sql ×1
sql-update ×1