社区
Web 开发
帖子详情
高并发,是不是后台要写成多线程?
YUDG
2018-01-08 05:44:01
加精
如题~~
请有经验的朋友,讲下。
感觉现在因为同时请求的人很多,服务器很卡。
...全文
9979
33
打赏
收藏
高并发,是不是后台要写成多线程?
如题~~ 请有经验的朋友,讲下。 感觉现在因为同时请求的人很多,服务器很卡。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
suxiao_mo
2018-04-27
打赏
举报
回复
卡和多线程没啥关系吧~
YUDG
2018-04-27
打赏
举报
回复
嗯,发这个帖子有段时间了。 当初是这样设计的,web端用户登录系统后,页面会定时请求后台,也就是操作redis,通过用户id来记录在线时间。 因为系统不大,给公司内部人员用,并发人数估计在百人左右。但是测试时候发现,几个开发人员用的时候都很卡。 所以特意来问问,是不是要这样做。 后来把操作redis请求改成线程了,就再没卡服务器了,一直都很顺畅。具体哪儿的原因,没有细究。 感谢各位的回复。
GOon_star
2018-02-07
打赏
举报
回复
如果业务处理上没有问题,没有必要加并发处理。 加服务器做前端分发,分担服务器的压力,不一定是代码的问题,找到问题症结,针对处理。
xiaocongzhi
2018-02-03
打赏
举报
回复
线程池控制线程分配
ply0022
2018-01-22
打赏
举报
回复
nginx反向代理是最简单的咯,肯定要的,然后最好看看服务器线程阻塞在哪里,不要乱加多线程,不是什么都要多线程的,不安全
ljh849893248
2018-01-17
打赏
举报
回复
换成soa的模型怎么样?
hp961218
2018-01-16
打赏
举报
回复
对你们老大说再配几个服务器
小灰狼
2018-01-16
打赏
举报
回复
如果本身就是一个基于HTTP的请求,那么多线程的事就是让 servlet 容器完成,你要处理的是单个线程下的逻辑 如果不是http项目,那就要自己启动线程,或者利用线程池
cattpon
2018-01-12
打赏
举报
回复
并不是~网上有教程啊~
itherael
2018-01-12
打赏
举报
回复
这种是设计问题 就统计一个在线时长,完全没必要开启多线程、配线程池等等操作,感觉就是高射炮打蚊子,既浪费了资源,又浪费了时间。 首先考虑业务,是实时显示还是单次查询,该业务在整个业务中处于什么位置,评估工程可以给予该业务的开销。 对于这种非功能性的需求,要么使用全局页面计时、统计登录和当前时间进行计算、或者JS框架进行处理等,没必要消耗大量后台的性能来做这种无关紧要的业务。
皇家肆掠者
2018-01-12
打赏
举报
回复
你这种多线程没用,多搞几台机器做负载专门做统计时长的。和访问网站应用服务器区分开,这样不影响正常业务
那个隔壁老黄
2018-01-11
打赏
举报
回复
用zookeeper咯。好像也是可以的。
游北亮
2018-01-11
打赏
举报
回复
对于web站点,应该避免多线程, 因为web服务器本身就是多线程响应请求的, 如果你收到某个用户的请求后,在请求里又起了多线程, 首先,这样做只能导致单个请求的处理时长变长了,因为多了CPU上下文切换时间; 其次,单个请求发起的多线程会影响接受用户请求的线程数量。 如果发起的多线程是处理io操作,那么是有效的,如果不存在io操作,纯cpu计算的代码,启动多线程是没有什么意义的, 这种情况下应该考虑通过消息队列转发到其它进程处理,然后当前请求快速返回, 具体业务具体分析,没有什么一成不变的
方元之外
2018-01-11
打赏
举报
回复
这有很多点的原因 比如 是否数据库慢,或者加入分布式消息队列,使消息平滑度过。 也可以加入缓存。 也要查看是否触发太多fullgc
Link8Guo
2018-01-11
打赏
举报
回复
楼主搜下io五种模型,我一般用完成端口
红中
2018-01-11
打赏
举报
回复
前端用的什么,setInterval()?这个方法有时候就是很卡。
什么都不能
2018-01-11
打赏
举报
回复
卡有多方面的原因,使用的容器,程序好用资源比高,io性能都可能成为瓶颈。
放开那禽兽冲我来
2018-01-10
打赏
举报
回复
没几个人在线还卡的基本是你代码的问题
聪头
2018-01-10
打赏
举报
回复
多线程必须的,还有有个线程池处理多线程和排队问题
nettman
2018-01-10
打赏
举报
回复
关注
加载更多回复(11)
单线程-
多线程
-
高并发
什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。 而一个进程又是由多个线程所组成的。 什么是线程? 线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的, 即不同的线程可以执行同样的函数。 什么是
高并发
,及
高并发
的处理 ? 之前我将
高并发
的解决方法误认为是线程或者是队列可以解决,因为
高并发
的时...
为什么要使用
多线程
?创建多少个线程合适?什么是线程池?
多线程
应用
多线程
1、什么是线程? 1.1、任务调度的基本概念 1.2、进程和线程的基本联系 1.3、
多线程
与多核的基本关系 2、为什么使用
多线程
? 2.1、并发场景的应用 2.1.1、I/O密集型(I/O bound) 2.1.1.1、单核型应用 2.1.2、CPU (计算)密集型程序((CPU-bound) 2.1.2.1、单核型 2.1.2.2、多核型(并行) ..
【Java】为什么使用
多线程
?
使用
多线程
的理由之一是和进程相比,它是一种非常花销小,切换快,更"节俭"的多任务操作方式。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。使用
多线程
的理由之二是线程间方便的通信机制。
Redis6.0为何引入
多线程
?单线程不香吗?
作者简介:曾任职于阿里巴巴,每日优鲜等互联网公司,任技术总监。15年电商互联网经历。一百天前Redis作者antirez在博客上(antirez.com)发布了一条重磅消息,Redis6...
「JAVA知识每日一问」:Redis6.0为什么引入
多线程
?
前言 Redis 官方在 2020 年 5 月正式推出 6.0 版本,提供很多振奋人心的新特性,所以备受关注。 一键获取Redis合集资料文档 提供了啥特性呀?知道了我能加薪么? 主要特性如下:
多线程
处理网络 IO; 客户端缓存; 细粒度权限控制(ACL); RESP3 协议的使用; 用于复制的 RDB 文件不在有用,将立刻被删除; RDB 文件加载速度更快; 其中备受关注的就是「
多线程
模型 + 客户端缓存」,我们只有掌握了新特性原理,才能判断什么时候使用 6.0 版本,如何用的更好更快,不踩
Web 开发
81,094
社区成员
341,717
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章