我一直在努力优化我的网站和数据库,我一直在使用mysqltuner.pl来帮助解决这个问题.我得到的一切都是正确的,除了表缓存命中率,无论我在my.cnf中提高它有多高,我仍然打0%(284开/ 79k开).
我的问题是我真的不明白究竟是什么影响了这个,所以我真的不知道在我的查询/数据库结构中要找什么来解决这个问题.
当数据库很小时,这个查询工作正常,但是现在数据库中有数百万行,我意识到我应该先考虑优化它.它正在查看超过600,000行并且正在使用where; 使用临时; 使用filesort(导致执行时间为5-10秒).它正在使用字段'battle_type'上的索引.
SELECT username, SUM( outcome ) AS wins, COUNT( * ) - SUM( outcome ) AS losses
FROM tblBattleHistory
WHERE battle_type = '0' && outcome < '2'
GROUP BY username
ORDER BY wins DESC , losses ASC , username ASC
LIMIT 0 , 50
Run Code Online (Sandbox Code Playgroud) 例如,我有这行代码:
echo 10359023529 + 0.2137582935;
Run Code Online (Sandbox Code Playgroud)
为什么会这样:
10359023529.2
代替:
10359023529.2137582935
我在MySQL中有一个用于实时聊天的MEMORY表(也许这不是为此的最佳表类型?),并且每晚删除行以使聊天日志可管理,从而导致表开销。但是,由于您无法在MEMORY表上运行OPTIMIZE,如何摆脱开销(Data_free在中show table status)?
我过去一年一直在开发一款新的在线游戏.该网站最近进行了beta测试,我希望在今年秋天推出黄金版.我从一些人那里听说他们第一次注册时很困惑,这让我想到了一个由各种类型的人组成的焦点小组(比如游戏玩家和非游戏玩家).我不确定如何设立焦点小组或如何让人们去做.
我到了一所大学,所以我觉得我有这个在我身边.我应该让人们亲自去做,还是我可以在网上做的事情?我有点倾向于面对面的事情.我想有15-20个人在线游戏的第一次报名的各种经验,告诉我他们喜欢什么,不喜欢,以及他们大约一个小时不理解的东西.我需要付钱给人,还是......?
只是想知道是否有人这样做过,我不太确定网站有多常见,但我非常认真地让这个网站尽可能地为最广泛的用户服务.
我在用户欺骗我的在线游戏时遇到一些问题,使用宏按一定顺序自动点击屏幕上的某些位置,以自动执行各种任务,而无需实际玩游戏.是否有任何方法可用于阻止此类活动,而无需在整个网站上涂抹CAPTCHA并破坏诚实用户的体验?
编辑:我忘了提,这是一个基于网站的游戏,而不是使用闪光灯.
有哪些方法可用于保护登录页面无法使用CURL通过远程PHP脚本登录?检查引用者和用户代理将不起作用,因为可以使用CURL进行设置.理想的解决方案是在不使用CAPTCHA的情况下解决这个问题,这个问题的关键在于尝试找出是否可行.
我在我们的网络应用程序上遇到了一个非常奇怪且看似随机的问题,我似乎无法成功调试.它可以在10分钟到6小时之间运行正常,然后突然间没有进出服务器的远程请求,它们只是挂起(这包括常规的http和Web套接字请求).奇怪的是,定期访问该站点仍然有效,直到达到操作系统文件描述符限制,然后http完全崩溃所有停止的连接.
没有错误,但是当问题开始时会抛出以下错误(我认为这是正在发生的事情的副作用而不是原因).
TypeError: Cannot read property '0' of null
at null.<anonymous> (/app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/collection.js:504:22)
at args.(anonymous function) (/app/node_modules/strong-agent/lib/proxy.js:85:18)
at g (events.js:175:14)
at EventEmitter.emit (events.js:98:17)
at Base.__executeAllServerSpecificErrorCallbacks (/app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/connection/base.js:315:29)
at /app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js:273:22
at /app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js:370:11
at /app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js:352:28
at _callback (/app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/db.js:670:5)
at /app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js:47:13
Run Code Online (Sandbox Code Playgroud)
我已经尝试提高文件描述符限制和全局代理maxSockets而不影响此行为.当这种情况发生时,没有流量涌入,并且在高峰时段和非高峰时段经常发生.CPU使用率始终保持在5%以下,并且在崩溃前或崩溃期间没有任何可察觉的变化.服务器也永远不会低于1GB的可用内存.
堆栈:SmartOS云服务器(Joyent),Express,Socket.io,MongoDB和Redis.
我已经调试了好几天了,完全没有想法去哪看.希望有人在SO上遇到类似的东西或对可以尝试或测试的东西有不同的想法.
我们有一个Vue.js(v2.2.6)应用程序在生产中运行,基于Hacker News演示应用程序结构进行服务器端渲染.我们有一个内存泄漏导致进程耗尽内存并在大约6-12小时后崩溃,我们已经开始在服务器上获取堆快照以尝试跟踪问题.
然而,我们已经挖掘了这些好几天,并没有真正得到任何地方.突出的事情(正如您在下面的屏幕截图中看到的)是有很多实例VueComponent和Vue$2正在创建并且永远不会从内存中删除.我对Vue服务器端渲染的内部结构知之甚少,不知道这是否是一个真正的领导者,如果是的话,从哪里可以看到.
有没有人碰到这样的事情,或者有什么想法,我们可能会找出可能导致这种情况的原因?
我有一个以用户排名为中心的网站,但是用户数已经增长到超过50,000,并且它正在给服务器带来压力,以便每隔5分钟更新所有这些.是否有更好的方法可用于至少每5分钟轻松更新一次排名?它不一定是用PHP,它可能是像perl脚本运行的东西或类似的东西能够更好地完成工作(虽然我不知道为什么会这样,只是离开我的选项在这里打开).
这是我目前更新排名的方法:
$get_users = mysql_query("SELECT id FROM users WHERE status = '1' ORDER BY month_score DESC");
$i=0;
while ($a = mysql_fetch_array($get_users)) {
$i++;
mysql_query("UPDATE users SET month_rank = '$i' WHERE id = '$a[id]'");
}
Run Code Online (Sandbox Code Playgroud)
更新(解决方案):
这是解决方案代码,执行和更新所有50,000行所需的时间不到1/2秒(根据Tom Haigh的建议将等级作为主键).
mysql_query("TRUNCATE TABLE userRanks");
mysql_query("INSERT INTO userRanks (userid) SELECT id FROM users WHERE status = '1' ORDER BY month_score DESC");
mysql_query("UPDATE users, userRanks SET users.month_rank = userRanks.rank WHERE users.id = userRanks.id");
Run Code Online (Sandbox Code Playgroud)