发表于: 2017-05-20 10:13:09
1 1380
今天完成的任务:
一.随着线程数的增加,错误率上升
样本1:
样本2:
样本3:
样本4:
样本5:
基本上无法访问了.
思考:一个用户从腾讯视频网站请求一个电影资源,然后在两个小时之内看完电影.退出网站,在这个过程中,涉及到数据库的访问,以及资源下载的过程对吞吐量的影响是什么?
ps:
1.统计网站访问量的三个指标PV, IP , UV.
2.进程,线程的概念
3.数据库应为需要持久化内容,所以数据存在硬盘等固定储存器中,相应的读取速度比内存慢很多.而缓存是把常用的内容放到服务器内存中,内存的存取速度快很多,也就很好的解决了并发问题.
二.分享深度思考
今天和大家分享了任务六的深度思考部分内容----为什么要使用memcache?memcashe有什么作用?
在以下的场景,memcache可以解决高并发的问题.
1.读的频率远大于写的频率(不需要将数据持久化)
2.数据库与缓存的成本优势比较,关系型数据库TPS(1500)远小于缓存,面对高并发,添加数据库的成本大于缓存,而缓存单节点15w以上.
3.讨论中和师兄提到了model序列化的问题,对象创建以后需要给对象一个序列号,以便缓存查找的时候可以找到.但是具体的原理还是不很明白.
4.在解决高并发,需要快速部署的时候,因为memcache本身的不足,集群的不同机器之间是互相独立的,没有数据方面的通信.不具备failover能力.
遇到的问题:
序列化之后,memcache报错.无法初始化.
10:17:49(ContextLoader.java:308)[ERROR] Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'memcachedPool' defined in class path resource [conf/spring-memcached.xml]: Could not resolve placeholder 'memcached.server'
at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:209)
at org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.processProperties(PropertyPlaceholderConfigurer.java:220)
at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:84)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:681)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:656)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:446)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
收获:
通过分享,发现了自己对memcache理解的不足.加油!
明天的计划:
加上Memcache,在新建数据的时候同时维护好缓存(没有新建数据接口就自己加上,可以分成是压测JSP和Json接口两种方式) ,确定数据没问题,重新压测服务器,测出90%的线在哪里.
评论