HTML5技术

net.sz.framework 框架 登录服务器架构 单服2 万 TPS(QPS) - 失足程序员(9)

字号+ 作者:H5之家 来源:H5之家 2017-04-13 11:05 我要评论( )

[04-12 15:41:03:665:INFO :LoginScript._login():95] 登录耗时 340290009 4 :34059 [ 04-12 15:41:03:665:INFO :LoginScript._login():114] 用户:340290009 数据库不存在!!! 创建用户[ 04-12 15:41:03:665:INFO

[04-12 15:41:03:665:INFO :LoginScript._login():95] 登录耗时 340290009 4 :34059 [04-12 15:41:03:665:INFO :LoginScript._login():114] 用户:340290009 数据库不存在!!!创建用户 [04-12 15:41:03:665:INFO :LoginScript._login():136] 登录耗时 340290009 5 :34059 [04-12 15:41:03:666:INFO :LoginScript._login():84] 用户:340290003 不存在缓存用户!!! [04-12 15:41:03:666:INFO :LoginScript._login():93] 登录耗时 340290003 3 :34056 [04-12 15:41:03:667:INFO :LoginScript._login():164] 登录耗时 340290009 6 :34061 [04-12 15:41:03:668:INFO :LoginScript._login():166] 登录耗时 340290009 7 :34062 [04-12 15:41:03:668:INFO :LoginScript._login():173] 登录耗时 340290009 8 :34062 [04-12 15:41:03:668:INFO :LoginScript._login():178] 登录耗时 340290009 8 :34062 [04-12 15:41:03:668:INFO :LoginScript._login():180] 平台:100, ip:192.168.2.235, 用户:340290009 用户登录完成!!! [04-12 15:41:03:671:INFO :HttpLoginScript.run():50] 处理一个登陆耗时:34065

 

我们从抛错和和打印日志情况分析,出现的情况为当操作来了以后,发现缓存不存在,然后进入锁状态,去操作数据库查询;

我们看到登录耗时 4 打印,情况发现查询数据库直接咯嘣;

查询数据是否存在居然耗时34秒;

好吧,数据库原因导致了查询耗时;

通过软件查询,也依然是耗时的,排除程序查询代码性能问题;

然后我们通过分析userinfo类

我们通过对userinfo类的分析,我们只对id字段加入了主键;那么数据库默认对id这个字段加入了索引;

然后我们每一次请求登录的时候数据库检索只能通过userNameLowerCase 字段进行检索;那么考虑对字段加入索引情况;

@Id @Column(nullable = false, unique = true) private long id; /** * */ @Column(nullable = false, unique = true) private String userName; /** * */ @Column(nullable = false, unique = true) private String userNameLowerCase;

 

我考虑在id,username  userNameLowerCase 三个字段都加入唯一键索引;

我先删除掉数据库,再收到把数据加到200多万测试

在改造了数据库索引后我们

并发下我们还是看出了,登录耗时情况;

看到这里,我们登录的操作,已经是加入缓存处理,数据库索引,提供查询等操作;可并发下还是会耗时呢?

仔细看代码发现

其实我们登录操作, 注册和查询数据库的时候,是需要加锁,保证唯一;

但是我们忽略了一个问题,加锁的时候,其实值加锁,账户的小写副本字符串就可以达到效果了;我这里加入了整个对象锁;锁的范围过大; 

(usernameLowerCase) {

[04-12 16:11:58:123:INFO :LoginScript._login():95] 登录耗时 411580006 4 :3 [04-12 16:11:58:123:INFO :LoginScript._login():114] 用户:411580006 数据库不存在!!!创建用户 [04-12 16:11:58:124:INFO :LoginScript._login():136] 登录耗时 411580006 5 :4 [04-12 16:11:58:124:INFO :LoginScript._login():95] 登录耗时 411580009 4 :3 [04-12 16:11:58:124:INFO :LoginScript._login():114] 用户:411580009 数据库不存在!!!创建用户 [04-12 16:11:58:124:INFO :LoginScript._login():164] 登录耗时 411580006 6 :4 [04-12 16:11:58:124:INFO :LoginScript._login():136] 登录耗时 411580009 5 :3 [04-12 16:11:58:124:INFO :LoginScript._login():164] 登录耗时 411580009 6 :3 [04-12 16:11:58:124:INFO :LoginScript._login():166] 登录耗时 411580006 7 :4 [04-12 16:11:58:124:INFO :LoginScript._login():173] 登录耗时 411580006 8 :4 [04-12 16:11:58:124:INFO :LoginScript._login():178] 登录耗时 411580006 8 :4 [04-12 16:11:58:124:INFO :LoginScript._login():166] 登录耗时 411580009 7 :3 [04-12 16:11:58:124:INFO :LoginScript._login():180] 平台:100, ip:192.168.2.235, 用户:411580006 用户登录完成!!! [04-12 16:11:58:124:INFO :LoginScript._login():173] 登录耗时 411580009 8 :3 [04-12 16:11:58:124:INFO :LoginScript._login():178] 登录耗时 411580009 8 :3 [04-12 16:11:58:124:INFO :LoginScript._login():180] 平台:100, ip:192.168.2.235, 用户:411580009 用户登录完成!!! [04-12 16:11:58:124:INFO :HttpLoginScript.run():50] 处理一个登陆耗时:3 [04-12 16:11:58:124:INFO :HttpLoginScript.run():50] 处理一个登陆耗时:4

 

现在可以看的出来,我们注册登录耗时,大约4毫秒了;

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 前端开发框架简介:angular和react - 腾讯云技术社区

    前端开发框架简介:angular和react - 腾讯云技术社区

    2017-04-11 18:02

  • WebApp框架 - stumpx

    WebApp框架 - stumpx

    2017-04-06 15:01

  • net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探 - 失足程序员

    net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探 -

    2017-04-02 10:11

  • Omi框架Store体系的前世今生 - 【当耐特】

    Omi框架Store体系的前世今生 - 【当耐特】

    2017-03-25 13:00

网友点评
b