背景 之前接手一个项目的时候,发现到处是 new Thread(()=>{ //do something }).Start(); 这么做的目的,无非是为了减少页面等待时间提高用户体验,把一些浪费时间的操作放到新线程中在后台运行. 问题 但是这样带来的问题是大量的创建线程,非常影响项目的性能,尤其是在一些大并发量访问的时候,经常导致后果是cpu 100%. 当然,如果你的项目到处是这样写的,然后,没挂,至少说明这个方法没几个人再用. 解决方法 于是下意识的想着给项目优化下, 第一想法是走队列,但是…
Java高并发--CPU多级缓存与Java内存模型 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 CPU多级缓存 为什么需要CPU缓存:CPU的频率太快,以至于主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费了资源.所有缓存的出现是为了缓解CPU和主存之间速度不匹配的问题--将运算所需数据复制到缓存中,使得运算能快速进行:当运算结束后再将缓存同步回内存中,这样处理器无需等待缓慢的内存读写. 缓存并非存储了所有的数据,那么它存在的意义是什么? 时间局部性:如…
动态语言的并发处理 相关概念 什么是进程.线程.协程 什么是多进程.多线程 同步阻塞模型 异步非阻塞模型 php并发编程实践 什么是进程.线程.协程 进程 进程是一个执行中的程序 进程的三态模型:多道程序系统中,进程在处理器上交替运行,状态不断的发生变化 运行.就绪.阻塞 运行:当一个进程在处理机上运行时,则称该进程处于运行状态 就绪:当一个进程获得了除处理机以为的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态 阻塞:也成等待或睡眠状态,一个进程正在等待某一时间发生而暂停停止运行,…
当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决这个问题有四种思路: 比如一个key是aaa,失效时间是30s. 1.定期从DB里查询数据,再刷到memcached里 这种方法有个缺点是,有些业务的key可能是变化的,不确定的. 而且不好界定哪些数据是应该查询出来放到缓存中的,难以区分冷热数据. 2.当缓存取到为null时,加锁去查询DB,只允许…
1:硬件方面 普通的一个p4的服务器每天最多能支持大约10万左右的IP,如果访问量超过10W那么需要专用的服务器才能解决,如果硬件不给力 软件怎么优化都是于事无补的.主要影响服务器的速度 有:网络-硬盘读写速度-内存大小-cpu处理速度. 2:软件方面 第一个要说的就是数据库 首先要有一个很好的架构,查询尽量不用* 避免相关子查询 给经常查询的添加索引 用排序来取代非顺序存取,如果条件允许 ,一般MySQL服务器最好安装 在Linux操作系统中 .关于apache和nginx在高并发的情况下推荐…
原文地址: http://blog.csdn.net/hengyunabc/article/details/20735701 当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 个人认为,当缓存将要失效时,及时地把新的数据刷到memcached里,这个是解决缓存失效瞬间高并发查DB的最好方法.那么如何及时地知道缓存将要失效? 解决这个问题有几种思路: 比…
高并发的相关概念 在某个时间点,有多少个访问量 如果一个系统的日PV在千万以上,有可能是一个高并发的系统 QPS: 每秒钟请求或者查询的数量,在互联网领域,指每秒相应请求数(指HTTP请求) 吞吐量: 单位时间处理的请求数量 响应时间: 从请求发出到收到相应花费的时间 PV: 综合浏览量 page view 页面浏览量或者点击量,一个访客在24小时之内的浏览量或者点击量 UV: 独立访客unique visitor,一定时间范围内相同访客多次访问网站,只计算一独立个访客 带宽: 计算带宽大小需关…
基础篇 高并发架构基础概念和优化思路 高并发架构相关概念 并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行 通常我们所定义的高并发并非上述解释,简单的来说就是在某个时间点.有多少个访问同时到来. 高并发:通常如果一个日PV在千万以上,就有可能是一个高并发的系统 QPS:每秒钟请求或查询的数量,在互联网领域,指每秒响应请求数(HTTP请求) 吞吐量:单位时间内处理的请求数量(通常由QPS和…
转载:https://zhyunfe.github.io/2017/10/02/php-interview-prepare-hc-2/ 数据库缓存 相关概念 什么是数据库缓存? 为什么使用缓存 使用MySQL查询缓存 使用Memcache缓存 使用Redis缓存 什么是数据库缓存 Mysql等一些常见的关系型数据库的数据都存储在磁盘中,在高并发场景下,业务应用对mysql产生的增删改查的操作造成巨大的I/O开销和查询压力,这无疑对数据库和服务器都是一种巨大的压力,为了解决此类问题,缓存数据的概念…
背景: 突然有一天,服务器访问很慢很慢,进程查看发现CPU是100%,而且没有任何降低的意思 收集: 打开任务管理器,进程查看中CPU排序,发现一个System的进程,第一想法以为是空闲利用,发现结束掉之后瞬间又起来的 查了下描述中写的“Xmrig miner ”,全是挖矿病毒,试了好几个方法,不行 整理: 自动重启,大概率是病毒,描述中写的“Xmrig miner ” 最后,进程中右键--属性--安全--编辑权限-拒绝,结束进程后,再未重启 汇总: [Xmrig miner ]CPU 100%…