内存:减少内存的分配和释放,这个本质上只为了内存分配和数据复制的时间;比如程序在启动的时候,就申请一块足够大的内存,不需要再次分配;另外可以考虑内存共享。
CPU:使用多线程,提高CPU的并发度;但是线程数不可以无限制地增加,因为进程切换也是需要花费时间的;减少使用不必要的锁,因为当一个资源被锁住的时候,其余的进程会等待锁的释放;改进I/O模型,使I/O和CPU计算尽量重叠进行,减少CPU空闲和调度的时间。
网络:根据应用的特点,合理地选择使用长链接还是短链接;因为建立连接是很耗时的,但是如果要使用长链接,依然要考虑超时的问题,因为如果连接时间过长并且没有使用,需要维持空闲连接,影响服务器性能。
提高硬件资源:说白了,就是花更多的钱,买更好的设备,比如带宽、更大的内存、更多的CPU、SSD等等。
还有很多手段,可以提高整个项目的并发处理能力:
负载均衡、集群:一台服务器再怎么优化,也不如十台服务器同时工作,通过负载均衡,把请求分发到多台服务器上进行处理;另外一个好处,当一台服务器发生故障的时候,并不会影响整个项目的运行;
缓存:其目的就是减少服务器的计算,把数据直接返回给用户;比如CDN、本地缓存、分布式缓存等等;
分布式:如果说集群是把相同的项目部署在多台服务器上,那么分布式相当于把一个项目拆分成多个项目,每个子项目都可以独立地集群化部署;分布式架构意味着可以利用更多的服务器,能过处理的并发访问会越大。
异步:调用方不需要等待被调用方处理完成,可以先做其它的事情,所有的事情可以并发处理;异步可以通过消息队列来实现异步;
冗余、弹性扩缩容:根据访问量,部署更多一些的服务器;当有突发流量的时候,弹性扩容机制可以保证快速地增加机器的数量,保证系统的稳定运行;
偶将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。mysql java连接,mysql引擎的索引,mysql搜索语句技巧,mysql开发入门书籍推荐,mysql 报错跳过,mysql 一对多 取一条