Redian新闻
>
请教一个实际工作中performance和scalability的问题
avatar
请教一个实际工作中performance和scalability的问题# Programming - 葵花宝典
c*u
1
现在工作中维护一个Portal,平台是Java+Jboss,数据库是oracle和cassandra,
framework是开源的liferay(基于spring, hibernate的一个portal开发框架)。整个
portal除了对user,account,role,permission等等有insert/delete/update操作,其他
的都是纯读操作。
现在user大概有几万个,account大概有几千个,permission大概有上百个,现在运行
起来难度不大,唯一的performance问题就是用户登录的时候查询时间有点长,因为这
个authentication的机制当时设计的时候有点复杂,一个account可以有多个role,一
个user也可以有多个role,role可以组成role group,每个role对应一些permission,
permission在liferay内部还要join几个表来查询显示的portlet,所以登录时间经常在
十几秒钟,请问有什么办法能在不重新设计认证机制的条件下提高performance吗?据
说在接下来的一年内,用户将增至几十万或者几百万,到时候肯定是更慢了。
目前我们这个portal expose了webservice用来给customers批量增加users,但是他们
每次要添加的user都会分配给上千个account,这个association操作也比较多,接下来
一年内这种request在一个短时间内会非常频繁,我担心我们的application handle不
了。小弟对分布式和scalability不是很懂,不知道有什么分布式的工具、框架、来应
对这种数据量和请求指数级上涨的需求吗?
avatar
w*z
2
把role, permission data 放在memory 里,不要每次都从db 里load

【在 c*******u 的大作中提到】
: 现在工作中维护一个Portal,平台是Java+Jboss,数据库是oracle和cassandra,
: framework是开源的liferay(基于spring, hibernate的一个portal开发框架)。整个
: portal除了对user,account,role,permission等等有insert/delete/update操作,其他
: 的都是纯读操作。
: 现在user大概有几万个,account大概有几千个,permission大概有上百个,现在运行
: 起来难度不大,唯一的performance问题就是用户登录的时候查询时间有点长,因为这
: 个authentication的机制当时设计的时候有点复杂,一个account可以有多个role,一
: 个user也可以有多个role,role可以组成role group,每个role对应一些permission,
: permission在liferay内部还要join几个表来查询显示的portlet,所以登录时间经常在
: 十几秒钟,请问有什么办法能在不重新设计认证机制的条件下提高performance吗?据

avatar
c*u
3
谢谢,已经尝试那么去做了,但是好像效果不算太明显,可能需要继续观察是不是数据
库延迟是最大的因素
那么关于那个数据量大和请求密度大了以后如何scale的问题呢? 有什么建议吗?

【在 w**z 的大作中提到】
: 把role, permission data 放在memory 里,不要每次都从db 里load
avatar
g*g
4
你需要先确认数据库是不是performance bottleneck,如果不是可能前端加节点就够了
。如果是要想办法减少数据库访问。通常ACL是在登录的时候load一次就够了,一次1,
2秒算正常,10几秒太慢了。

【在 c*******u 的大作中提到】
: 现在工作中维护一个Portal,平台是Java+Jboss,数据库是oracle和cassandra,
: framework是开源的liferay(基于spring, hibernate的一个portal开发框架)。整个
: portal除了对user,account,role,permission等等有insert/delete/update操作,其他
: 的都是纯读操作。
: 现在user大概有几万个,account大概有几千个,permission大概有上百个,现在运行
: 起来难度不大,唯一的performance问题就是用户登录的时候查询时间有点长,因为这
: 个authentication的机制当时设计的时候有点复杂,一个account可以有多个role,一
: 个user也可以有多个role,role可以组成role group,每个role对应一些permission,
: permission在liferay内部还要join几个表来查询显示的portlet,所以登录时间经常在
: 十几秒钟,请问有什么办法能在不重新设计认证机制的条件下提高performance吗?据

avatar
w*z
5
run 一下profile, 找到哪里慢。
scale 的话, 就要加node 了,前面加一个load balancer

【在 c*******u 的大作中提到】
: 谢谢,已经尝试那么去做了,但是好像效果不算太明显,可能需要继续观察是不是数据
: 库延迟是最大的因素
: 那么关于那个数据量大和请求密度大了以后如何scale的问题呢? 有什么建议吗?

avatar
c*u
6
现在用了一个Load Balancer,后面两个server同时运行两个instance,你的意思是再加
几个server?
能推荐一个profile的tool吗?

【在 w**z 的大作中提到】
: run 一下profile, 找到哪里慢。
: scale 的话, 就要加node 了,前面加一个load balancer

avatar
w*z
7
先找出来哪里慢。可能是code 有问题。我用过youkit. 在没有load 的情况下,也很慢
吗? 如果那样的话,自己加Debug log, 把timestamp 打出来,应该也能找到问题。

【在 c*******u 的大作中提到】
: 现在用了一个Load Balancer,后面两个server同时运行两个instance,你的意思是再加
: 几个server?
: 能推荐一个profile的tool吗?

avatar
w*a
8
如果是数据库的瓶颈,可以考虑分级。我们以前的一个系统用四服务器RAC, 到几百万
用户的时候不行了。后来改两级数据库,一个上级目录数据库加四十多个下级子数据库
,支持到了上千万用户无压力,还可以轻松扩展。

【在 c*******u 的大作中提到】
: 现在工作中维护一个Portal,平台是Java+Jboss,数据库是oracle和cassandra,
: framework是开源的liferay(基于spring, hibernate的一个portal开发框架)。整个
: portal除了对user,account,role,permission等等有insert/delete/update操作,其他
: 的都是纯读操作。
: 现在user大概有几万个,account大概有几千个,permission大概有上百个,现在运行
: 起来难度不大,唯一的performance问题就是用户登录的时候查询时间有点长,因为这
: 个authentication的机制当时设计的时候有点复杂,一个account可以有多个role,一
: 个user也可以有多个role,role可以组成role group,每个role对应一些permission,
: permission在liferay内部还要join几个表来查询显示的portlet,所以登录时间经常在
: 十几秒钟,请问有什么办法能在不重新设计认证机制的条件下提高performance吗?据

avatar
d*n
9
role->perm听着像静态的东西可以放内存里。account->role可能会变更所以查询也无
所谓。三表join也不算很不靠谱,有时候有些地方用些简单的sql optimization就可以。
这样的load听着根本不可能有瓶颈。

【在 c*******u 的大作中提到】
: 现在工作中维护一个Portal,平台是Java+Jboss,数据库是oracle和cassandra,
: framework是开源的liferay(基于spring, hibernate的一个portal开发框架)。整个
: portal除了对user,account,role,permission等等有insert/delete/update操作,其他
: 的都是纯读操作。
: 现在user大概有几万个,account大概有几千个,permission大概有上百个,现在运行
: 起来难度不大,唯一的performance问题就是用户登录的时候查询时间有点长,因为这
: 个authentication的机制当时设计的时候有点复杂,一个account可以有多个role,一
: 个user也可以有多个role,role可以组成role group,每个role对应一些permission,
: permission在liferay内部还要join几个表来查询显示的portlet,所以登录时间经常在
: 十几秒钟,请问有什么办法能在不重新设计认证机制的条件下提高performance吗?据

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。