小计一次调优

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的内存,记得要给操作系统或其他项目留下足够的内存。
169c52ecc2cc1b275a8b9d7448016d6

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;
}

为了降低服务器压力,错误页面使用的图片直接用了新浪微博的图床。

 

结论:

应该支持上万人的秒杀不会卡顿了,实际观察后再补充。

Cunchao.com Bid History(7 Bidders:, 26 Bids)

2018-08-17 by Jinyang | No Comments | Filed in 域名
Bidder Bid Date Time
first1

High Bid
$304.00 Aug 16 12:52:55
ckrgksanrndghk

$284.00 Aug 16 12:52:40
first1

$264.00 Aug 16 12:22:54
Alibackorders

$244.00 Aug 16 12:22:30
first1

$224.00 Aug 16 12:19:53
Alibackorders

$204.00 Aug 16 12:19:50
first1

$194.00 Aug 16 12:14:54
nameword

$184.00 Aug 16 12:14:26
first1

$174.00 Aug 16 11:59:24
nameword

$164.00 Aug 16 08:58:21
first1

$154.00 Aug 16 07:19:06
Alibackorders

P
$150.00 Aug 16 07:19:06
Alibackorders

P
$144.00 Aug 16 07:16:42
first1

$134.00 Aug 16 07:16:42
Alibackorders

P
$124.00 Aug 16 07:07:48
first1

$114.00 Aug 16 07:07:48
Alibackorders

$104.00 Aug 15 23:52:02
DefendOr6

P
$99.00 Aug 15 23:52:03
DefendOr6

$74.00 Aug 15 21:40:45
bosskk

$69.00 Aug 15 15:02:46
first1

$64.00 Aug 14 04:08:54
Alibackorders

$59.00 Aug 13 12:49:31
first1

$59.00 Aug 13 12:49:31
jiuzhe

$59.00 Aug 13 12:49:31
nameword

$59.00 Aug 13 12:49:31
DefendOr6

$59.00 Aug 13 12:49:31

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
pengge

$2,001.00 Aug 13 05:52:47
CNname

P
$2,000.00 Aug 13 05:52:47
CNname

P
$1,901.00 Aug 13 05:52:38
pengge

$1,851.00 Aug 13 05:52:38
CNname

P
$1,801.00 Aug 13 05:52:31
pengge

$1,751.00 Aug 13 05:52:31
CNname

P
$1,551.00 Aug 13 05:52:05
pengge

$1,501.00 Aug 13 05:52:05
CNname

P
$1,451.00 Aug 13 05:51:57
pengge

$1,401.00 Aug 13 05:51:57
CNname

P
$1,351.00 Aug 13 03:57:01
Doomain

$1,301.00 Aug 13 03:57:01
CNname

P
$1,251.00 Aug 12 22:12:13
Doomain

$1,201.00 Aug 12 22:12:13
CNname

$1,151.00 Aug 12 20:50:22
pengge

$1,101.00 Aug 12 17:27:31
CNname

P
$1,052.00 Aug 12 17:27:31
CNname

$1,051.00 Aug 12 08:36:30
pengge

$1,001.00 Aug 12 07:14:42
CNname

P
$1,000.00 Aug 12 07:14:42
CNname

P
$850.00 Aug 12 07:14:14
pengge

$800.00 Aug 12 07:14:14
CNname

P
$750.00 Aug 12 07:13:34
pengge

$700.00 Aug 12 07:13:34
CNname

P
$650.00 Aug 12 07:10:14
pengge

$600.00 Aug 12 07:10:14
CNname

$550.00 Aug 12 06:40:22
pengge

P
$500.00 Aug 12 06:40:22
pengge

P
$421.00 Aug 12 06:40:14
CNname

$401.00 Aug 12 06:40:14
pengge

$381.00 Aug 12 06:19:56
wisely

P
$361.00 Aug 12 06:19:57
wisely

P
$264.00 Aug 12 06:19:06
pengge

$244.00 Aug 12 06:19:06
wisely

P
$224.00 Aug 12 03:50:35
Doomain

$204.00 Aug 12 03:50:35
wisely

P
$194.00 Aug 11 10:34:13
Affiliate

$184.00 Aug 11 10:34:13
wisely

P
$174.00 Aug 11 10:34:08
Affiliate

$164.00 Aug 11 10:34:08
wisely

P
$154.00 Aug 11 10:34:03
Affiliate

$144.00 Aug 11 10:34:03
wisely

P
$134.00 Aug 11 10:33:55
Affiliate

$124.00 Aug 11 10:33:55
wisely

P
$114.00 Aug 11 10:33:19
Affiliate

$104.00 Aug 11 10:33:19
wisely

P
$99.00 Aug 11 10:33:13
Affiliate

$94.00 Aug 11 10:33:13
wisely

P
$89.00 Aug 11 10:27:13
Affiliate

$84.00 Aug 11 10:27:13
wisely

$79.00 Aug 11 04:00:48
hubaba

$74.00 Aug 11 02:31:48
bosskk

$69.00 Aug 10 14:38:50
luxtea

$64.00 Aug 10 11:35:39
Alibackorders

$59.00 Aug 10 09:04:10
wisely

$59.00 Aug 10 09:04:10
plOms8

$59.00 Aug 10 09:04:10
WithoutAlias

$59.00 Aug 10 09:04:10
jiuzhe

$59.00 Aug 10 09:04:10
Doomain

$59.00 Aug 10 09:04:10
first1

$59.00 Aug 10 09:04:10
szdomains

$59.00 Aug 10 09:04:10
Sherrys

$59.00 Aug 10 09:04:10
yijiebackorder

$59.00 Aug 10 09:04:10
nameword

$59.00 Aug 10 09:04:10
mikucn

$59.00 Aug 10 09:04:10
DefendOr6

$59.00 Aug 10 09:04:10
Jokers

$59.00 Aug 10 09:04:10
somealias

$59.00 Aug 10 09:04:10
ckrgksanrndghk

$59.00 Aug 10 09:04:10
wnnrscrs

$59.00 Aug 10 09:04:10
hubaba

$59.00 Aug 10 09:04:10
everfirst

$59.00 Aug 10 09:04:10
lueecer

$59.00 Aug 10 09:04:10
Affiliate

$59.00 Aug 10 09:04:10
junqingfu

$59.00 Aug 10 09:04:10
CNname

$59.00 Aug 10 09:04:10

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然后再做一系列的调整、传输,略繁琐。

重复的日常工作,要实现自动化,道理懂得,但是实践起来  还是能偷懒就人肉。

最近真忙不过来了,精疲力竭的(开始锻炼身体  可能有点拉伤了肌肉)

TIM图片20180811104824

 

写了最简单的定时执行的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

JBoss 6 迁移部署小记

2018-07-07 by Jinyang | No Comments | Filed in 技术相关

要说迁移部署,其实之前也是运行在jboss下的,不过运行的模式不同   原来只使用了jboss的tomcat  这次使用普通的jboss standalone 的运行模式。

1. 解压模式下运行项目

jboss 默认是使用war包部署运行的,带来的一个问题就是无法增量更新、无法上传图片文件 ;

1. 修改 standalone.xml 添加 auto-deploy-exploded=true 

2. 修改需要解压运行的war文件的解压后的文件夹的名称为 project.war  , 然后 touch project.war.dodeploy ,重启 standalone.sh

 

2. nginx文件夹别名

经过上述调整的解压后的文件夹为  project.war , 对应的请求网址为  域名/project ,如果想使用nginx处理图片等静态文件,因为 project.war 不是 project 文件夹,所以没办法请求到文件;

1. 增加一个  软链接  project  到 project.war

 

3. session id  sessionid 中存在空格的问题

这个版本的jboss的使用 65 个字符串来生成sessionid (SESSION_ID_ALPHABET has to be 65 characters in length) ,其实有 加号 +  减号 –  下划线 _  , 而 加号 + 在url中作为参数传递中会被错误的转化成 空格 ,项目使用sessionid作为key来存储客户信息, redis 不支持key中存在空格(redis自身使用空格 space 作为分隔符   所以不支持允许key中有空格),所以只好去除特殊符号  修改为只使用大小写数字的组合 。

原本默认的为:  ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-_

调整修改为:

<property name=”-Dorg.apache.catalina.session.ManagerBase.SESSION_ID_ALPHABET” value=”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678901″/>

 

完整的配置文件参考 standalone.xml 

<?xml version=1.0 encoding=UTF-8?>
<server xmlns=urn:jboss:domain:1.3>
<extensions>
<extension module=org.jboss.as.clustering.infinispan/>
<extension module=org.jboss.as.configadmin/>
<extension module=org.jboss.as.connector/>
<extension module=org.jboss.as.deployment-scanner/>
<extension module=org.jboss.as.ee/>
<extension module=org.jboss.as.ejb3/>
<extension module=org.jboss.as.jaxrs/>
<extension module=org.jboss.as.jdr/>
<extension module=org.jboss.as.jmx/>
<extension module=org.jboss.as.jpa/>
<extension module=org.jboss.as.logging/>
<extension module=org.jboss.as.mail/>
<extension module=org.jboss.as.naming/>
<extension module=org.jboss.as.osgi/>
<extension module=org.jboss.as.pojo/>
<extension module=org.jboss.as.remoting/>
<extension module=org.jboss.as.sar/>
<extension module=org.jboss.as.security/>
<extension module=org.jboss.as.threads/>
<extension module=org.jboss.as.transactions/>
<extension module=org.jboss.as.web/>
<extension module=org.jboss.as.webservices/>
<extension module=org.jboss.as.weld/>
</extensions>
<system-properties>
<property name=org.apache.catalina.session.ManagerBase.SESSION_ID_ALPHABET value=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-_/>
</system-properties>

 

 

 

4. 修改redis支持写入key时存在空格

如果不修改上述的sessionid的生成机制,那就需要修改redis的写入读取机制,把空格转化为其他符号。

public static String SpaceReplace(String strOld){
   String[] split = strOld.split(" ");
   StringBuilder stringBuilder = new StringBuilder();
   for (int i = 0; i < split.length-1; i++) {
      stringBuilder.append(split[i]).append("%20");
   }
   stringBuilder.append(split[split.length-1]);
   String strNew = stringBuilder.toString();
   return strNew;
}

 

Tags: , , ,

返回顶部