并发就是同一时间访问某个服务所产生的效果。
并发可能导致以下几个问题:
1. 写文件错误,如多写、少写、错写(严重)
2. 数据存储读取错误,如已经产生的效果没有立即获取(客户立马就不高兴了)
3. 服务器响应变慢,如有些需要系统自动等待锁操作(稍慢可以接受)
4. 服务器直接挂掉,某些操作不当导致服务器资源耗尽只有挂掉了(你完了)
发现需要解决的问题,那就对症下药吧。
### 1. 写文件
这种场景基本上是在于记录日志一类的操作吧,平时没有什么实际用处,但是真的到了出事的时候,就尤其需要了,里面会记录一些操作记录,特殊操作结果情况等等。一般来说,这种文件都是以追加的形式进行写入文件的,但是因为都是写一个文件,如果同时操作,可能就会出现各种难以预料的事。当然,可能最多就是某用户写的日志被另一个给覆盖了,少一两条也话没什么关系,我最开始也是这么认为的。但是,这也是在我们的预料之中,预料之外的事鬼知道呢,我就曾经因为写日志把整个服务给整挂掉了你信不?还是,加锁吧,看情况,加读锁、写锁,慢就慢一点吧,准确性安全性放第一吧!
### 2. 数据错误
这绝对是致命的,如果数据出问题了,没有给客户作好解释,基本上就是,能赔多少就赔多少,赔不了咱们就关门歇业吧!说句行外话,人们所有的操作,不都是基于对系统数据的相信吗?如果数据都错了,那谁还敢再用,毕竟,他什么也没有干啊,所有的东西都显得那么科幻!那么,并发下,我们可以做什么呢?
1. 数据库该有的唯一键一定要加上(即使其他都错了也不能让真数据写进去);
2. 针对特殊业务采用不同特点的数据库,一般应对高并发都要求处理速度极快,所以nosql内存数据库就是必须的了;
3. 在保证数据准确的同时尽量使用查询缓存;
4. 一些耗时的不需要实时的操作,仍给队列慢慢去做吧!
### 3.服务器响应慢
一般是通过负载均衡,分布式服务搞定的,代码里做到尽量最优化,如果还是承受不住的话,那就加机器吧!
- 简介
- Cookie
- HTML5 LocalStorage
- session
- 当浏览器关闭后,Session就销毁了吗?
- mysql数据库保存session
- HTTP协议的由来
- fsockopen异步请求
- http防盗链
- Apache伪静态知识补充
- 大并发量解决方案
- 大型网站是怎样解决多用户高并发访问
- 网站高并发 大流量访问的处理及解决方法
- 并发数与在线客户数 注册用户数的关系
- 即时聊天程序
- 反向Ajax实现
- ob缓存作用
- 浅聊并发之战
- php扩展安装
- php安装redis扩展
- SQLMap自动化实施SQL注入共计
- 命名空间namespace
- 集群和分布式之【session共享】
- php Redis存储Session 【1】
- php Redis存储Session 【2】
- php mysql存储session【1】
- php缓存
- 文件缓存
- memcache和redis的比较
- 原生session与session in redis对比
- XSS攻击【1】
- XSS攻击【2】
- PHP消息队列
- php+mysql 模拟发送邮件队列
- php+mysql 模拟订单处理队列
- php+redis 模拟秒杀队列
- RabbitMQ 消息队列系统
- beanstalkd
- PHP构建即时通讯
- WebSocket协议
- workerman
- PHP变量的作用域
- PHP传值和传引用的区别
- PHP匿名函数
- PHP递归函数&应用
- PHP单例模式
- PHP性能优化
- RESTful
- 集群
- 增加pgsql扩展
- php.ini路径查找
- Swoole Compiler
- mysql 主从
- 主从
- mysql-proxy
- window docker环境