小樱 发表于 2024/4/9 02:54

NexusPHP pt站tracker服务器性能优化,改动announce.php代码加入随机间隔汇报

NexusPHP pt站tracker服务器性能优化,改动announce.php代码加入随机间隔汇报

问题现象,有些用户挂了几千个种子,会在1秒内高达几千的并发连接数请求到达服务器中,导致服务器定期时间出现异常高cpu消耗,如图所示
https://att.itzmx.com/data/attachment/forum/202403/31/173422v44h7y3wjuojhrj5.png

本代码修复了这个问题,加入差分技术实现为每一个种子的间隔时间错开峰值,不在出现服务器异常CPU高峰值

源代码
$real_annnounce_interval = $announce_interval;
if ($anninterthreeage && ($anninterthree > $announce_wait) && (TIMENOW - $torrent['ts']) >= ($anninterthreeage * 86400))
$real_annnounce_interval = $anninterthree;
elseif ($annintertwoage && ($annintertwo > $announce_wait) && (TIMENOW - $torrent['ts']) >= ($annintertwoage * 86400))
$real_annnounce_interval = $annintertwo;

新代码
// https://bbs.itzmx.com/thread-106752-1-1.html
$OT_CLIENT_REQUEST_INTERVAL = $announce_interval;
$OT_CLIENT_REQUEST_INTERVAL2 = $annintertwo;
$OT_CLIENT_REQUEST_INTERVAL3 = $anninterthree;
$OT_CLIENT_REQUEST_VARIATION = 60 * 6; // random 6 minute
$announce_interval_random = $OT_CLIENT_REQUEST_INTERVAL - $OT_CLIENT_REQUEST_VARIATION / 2 + mt_rand(0, $OT_CLIENT_REQUEST_VARIATION);
$announce_interval_random2 = $OT_CLIENT_REQUEST_INTERVAL2 - $OT_CLIENT_REQUEST_VARIATION / 2 + mt_rand(0, $OT_CLIENT_REQUEST_VARIATION);
$announce_interval_random3 = $OT_CLIENT_REQUEST_INTERVAL3 - $OT_CLIENT_REQUEST_VARIATION / 2 + mt_rand(0, $OT_CLIENT_REQUEST_VARIATION);

$real_annnounce_interval = $announce_interval_random;
if ($anninterthreeage && ($anninterthree > $announce_wait) && (TIMENOW - $torrent['ts']) >= ($anninterthreeage * 86400))
$real_annnounce_interval = $announce_interval_random3;
elseif ($annintertwoage && ($annintertwo > $announce_wait) && (TIMENOW - $torrent['ts']) >= ($annintertwoage * 86400))
$real_annnounce_interval = $announce_interval_random2;

修复后的代码下载:

以前发过的后台站点设置优化性能,可以同时起效果
https://bbs.itzmx.com/thread-102738-1-1.html


用上了优化的announce,那几个说一打开客户端后,所有PT站都上不去的问题也解决了
产生原因是是触发了cloudflare的全局防火墙,可以试试直接访问cdn相关的节点ip能不能打开 http://104.19.19.9/cdn-cgi/trace
要解决只能网站换其它cdn了,全局的防火墙无法在后台关闭,但是免费cf真香,换其它cdn会提高服务器成本
出现问题的时候,所有用CF的网站,期间都访问不了,持续大概5-10分钟,所以所有PT站都要安排上,不然挂多个PT站的时候,A站触发导致B站连带访问不了

已经做了ip访问频率限制,还需要这个吗?
你们现在这是限制,,会导致用户被限制不可用,我这个是优化,让客户端发出来的请求不是同时,自动为每个BT任务错开时间,两者是可以共存的


2024年7月6日补充
第三方xiaomlove版nexusphp已经集成随机时间代码:https://github.com/xiaomlove/nexusphp/commit/6516d908a1acfef85a14b91d01fab2fccfe1ec8a
群友更新后的CPU效果图


页: [1]
查看完整版本: NexusPHP pt站tracker服务器性能优化,改动announce.php代码加入随机间隔汇报