http_load -p 10 -s 60 -r 3 -f 100 c:\urls.txt 参数的含义: -parallel 简写-p :并发的用户进程数 -fetches 简写-f :总计的访问请求次数 -rate 简写-r :每秒的访问频率 -seconds简写-s :总计的访问时间 准备URL文件:urls.txt,文件格式是每行一个URL
Archives: 技术相关
排除DeadlockLoserDataAccessException异常
2018-09-05 by Jinyang | No Comments | Filed in 技术相关某高并发场景的应用使用数据库的insert select 方式做了业务的逻辑判断限制,以实现预期的数据控制(不超出业务允许的范围),实际使用中的确是不会出现绕过业务规则的业务发生,但是正常的请求因为并发锁表导致相互等待 死锁 使得业务无法正常进行。 1. 分析sql语句 使所有sql子查询语句都走唯一索引、索引等 不要全表扫描导致产生表级别的锁 执行explain sql语句 ,把ALL类型的全表扫描的执行sql都优化成走索引执行 2. 降低事务等级为 ISOLATION_READ_COMMITTED ,缩小事务 及时commit READ_COMMITTED 不会锁表,是Oracle的默认事务等级,MySql默认使用的REPEATABLE READ ,READ UNCOMMITTED更快 更不易锁表。 3. 分解service impl中的方法中作为整体事务的容易出错的代码,单独进行异常的捕获,防止其出现IP错误等导致数据库回滚 4. 其他业务语句涉及到同一张表的 要使用索引 避免全表扫描的update 。
小计一次调优
2018-08-20 by Jinyang | 1 Comment | Filed in 技术相关系统的ulimit 参数调整 Nginx的open file参数调整: worker_rlimit_nofile (理论上的最大并发连接: max_clients = worker_processes * worker_connections) 多节点 IPHASH 权重 Jboss sessionid生成机制和Redis键值冲突的bug修复 Jboss 内存扩大 根据实际需求配置Jboss的内存,记得要给操作系统或其他项目留下足够的内存。 Jboss 并发数提高 业务(程序)并发点从数据库迁移至redis 使用redis的原子计数器来实现一个高效、高并发安全的计数策略(类似数据库的sequence) 共享存储,从无到SAN再到NAS SAN存在并发读写时存在异常的问题,会引发web容器启动时文件扫描错误(直接把静态的、需要共享的文件夹从war代码包里剥离出去是一个更好的办法,让jboss启动的更快) NAS需要在NAS管理端界面配置好客户端的访问IP才可以正常挂载 全部静态文件移交给Nginx 把所有静态文件目录的解析全部直接由nginx完成,程序在初期就规划好所有的静态文件在一个static目录下 Nginx 5** 错误页面定制 error_page 500 502 503 504 /500.html; location = /500.html { root /文件目录; internal; } 为了降低服务器压力,错误页面使用的图片直接用了新浪微博的图床。 结论: 应该支持上万人的秒杀不会卡顿了,实际观察后再补充。
telnet 到 redis 6379 后退出
2018-08-16 by Jinyang | No Comments | Filed in 技术相关1. 输入 ctrl+] 2. 输入 quit 即可
Shoula.com Bid History(26 Bidders:, 86 Bids)
2018-08-15 by Jinyang | No Comments | Filed in 技术相关Bidder Bid Date Time CNname High Bid P $2,464.00 Aug 13 11:24:53 Doomain $2,414.00 Aug 13 11:24:53 CNname P $2,351.00 Aug 13 11:23:25 Doomain $2,301.00 Aug 13 11:23:25 CNname P $2,251.00 Aug 13 11:23:11 Doomain $2,201.00 Aug 13 11:23:11 CNname P $2,151.00 Aug 13 11:23:04 Doomain $2,101.00 Aug 13 11:23:04 CNname $2,051.00 Aug 13 11:12:24 […]
Nginx转发请求时重置url
2018-08-13 by Jinyang | No Comments | Filed in 技术相关真实服务器 A上的项目端口在 nnnn ,Nginx 请 【域名/项目名】 的路径转发到后端的tomcat。 但是项目实际是没有项目名的 直接在/ 下运行的,因为直接转发过去就会报错 调整nginx配置,完美的支持需求: location /项目名 { return 302 /项目名/; } location /项目名/ { add_header Via “项目名_testserver” always; proxy_set_header Host $Host; proxy_set_header X_Real_Ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_redirect /项目名/ /; proxy_pass http://网址:端口/; } 重点在于 proxy_pass http://网址:端口/; 的最后的一个斜杠,这个是严格匹配的,所以可以转成任何需要的路径 。
svn保留变更记录迁移到git
2018-08-12 by Jinyang | No Comments | Filed in 技术相关git svn clone -A user.txt https://jsly.haojiawu.com:18443/svn/mobile/trunk/mobile/trunk njzone git remote add origin http://vcs.eboa.cn:666/lijy/njzone.git git push -u origin master hg转移更方便: hg push git+http://vcs.eboa.cn:666/lijy/nczone.git
简单的测试环境项目自动更新部署
2018-08-11 by Jinyang | No Comments | Filed in 技术相关某测试环境,准确的来说是交叉测试环境,因为APP、业务入口、登录都是正式的,业务及后端为测试环境。系统部署在云端VPS上,每次更新需要先登录VPN然后再做一系列的调整、传输,略繁琐。 重复的日常工作,要实现自动化,道理懂得,但是实践起来 还是能偷懒就人肉。 最近真忙不过来了,精疲力竭的(开始锻炼身体 可能有点拉伤了肌肉) 写了最简单的定时执行的shell脚本,就解决了这个问题,虽然不完美,但是解决了一部分问题。 那为什么不早点使用自动方案呢 ?
Tags: 部署
越来越慢的数据库时间
2018-08-11 by Jinyang | No Comments | Filed in 技术相关某秒杀活动,为了安全起见 分别在js代码 java代码 redis并发计数 数据库事务4个层面进行业务安全的控制。 起先发现数据库慢16分钟,所以代码层面设置时提前了16分钟。 后来升级更新秒杀代码为基于redis的代码,本地反复测试无误后 发布至生成小规模测试也没有问题,但是活动开始后 观察日志 持续2分钟没有订单产生,百思不得其解 想着是否要立刻回滚代码,恩 哪怕是最笨拙的复制压缩备份 也一定要有备份,突然发现订单蜂拥而至。 为什么前2分钟没有订单? 检查发现是数据库的时间 又慢了2分钟,所以…. 如何解决这样的问题? 暂时没想好 ,每次活动前检查下数据库时间并据此修正活动的配置参数是当前的做法。
Tags: 秒杀
Nginx 日志按日期切割
2018-07-11 by Jinyang | No Comments | Filed in 技术相关1. 切割日志的脚本 #!/bin/bash logs_path=”/usr/local/nginx/logs” log_name=”access.log” pid_path=”/usr/local/nginx/logs/nginx.pid” YESTERDAY=$(date -d “yesterday” +%Y-%m-%d) mv ${logs_path}/${log_name} ${logs_path}/access-${YESTERDAY}.log kill -USR1 `ps axu | grep “nginx: master process” | grep -v grep | awk ‘{print $2}’` find ${logs_path} -mtime +7 -name “*.log” | xargs rm -f exit 0 2. 定时任务配置 0 0 * * * root /bin/sh /usr/local/nginx/logs/cut_nginx_log.sh