某测试环境,准确的来说是交叉测试环境,因为APP、业务入口、登录都是正式的,业务及后端为测试环境。系统部署在云端VPS上,每次更新需要先登录VPN然后再做一系列的调整、传输,略繁琐。
重复的日常工作,要实现自动化,道理懂得,但是实践起来 还是能偷懒就人肉。
最近真忙不过来了,精疲力竭的(开始锻炼身体 可能有点拉伤了肌肉)
写了最简单的定时执行的shell脚本,就解决了这个问题,虽然不完美,但是解决了一部分问题。
那为什么不早点使用自动方案呢 ?
Tags: 部署
某测试环境,准确的来说是交叉测试环境,因为APP、业务入口、登录都是正式的,业务及后端为测试环境。系统部署在云端VPS上,每次更新需要先登录VPN然后再做一系列的调整、传输,略繁琐。
重复的日常工作,要实现自动化,道理懂得,但是实践起来 还是能偷懒就人肉。
最近真忙不过来了,精疲力竭的(开始锻炼身体 可能有点拉伤了肌肉)
写了最简单的定时执行的shell脚本,就解决了这个问题,虽然不完美,但是解决了一部分问题。
那为什么不早点使用自动方案呢 ?
Tags: 部署
某秒杀活动,为了安全起见 分别在js代码 java代码 redis并发计数 数据库事务4个层面进行业务安全的控制。
起先发现数据库慢16分钟,所以代码层面设置时提前了16分钟。
后来升级更新秒杀代码为基于redis的代码,本地反复测试无误后 发布至生成小规模测试也没有问题,但是活动开始后 观察日志 持续2分钟没有订单产生,百思不得其解 想着是否要立刻回滚代码,恩 哪怕是最笨拙的复制压缩备份 也一定要有备份,突然发现订单蜂拥而至。
为什么前2分钟没有订单? 检查发现是数据库的时间 又慢了2分钟,所以….
如何解决这样的问题? 暂时没想好 ,每次活动前检查下数据库时间并据此修正活动的配置参数是当前的做法。
Tags: 秒杀
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下的,不过运行的模式不同 原来只使用了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;
}
| Bidder | Bid | Date | Time |
|---|---|---|---|
| leader
High Bid
|
$234.00 | Jun 16 | 13:02:14 |
| jiuzhe
P
|
$214.00 | Jun 16 | 12:59:16 |
| leader | $204.00 | Jun 16 | 12:59:16 |
| jiuzhe | $194.00 | Jun 16 | 12:55:10 |
| first1
P
|
$184.00 | Jun 16 | 12:55:10 |
| first1 | $174.00 | Jun 16 | 12:54:51 |
| jiuzhe
P
|
$164.00 | Jun 16 | 12:54:45 |
| first1 | $154.00 | Jun 16 | 12:54:45 |
| jiuzhe
P
|
$144.00 | Jun 16 | 12:54:39 |
| leader | $134.00 | Jun 16 | 12:54:39 |
| jiuzhe | $124.00 | Jun 16 | 12:54:34 |
| first1 | $114.00 | Jun 16 | 12:54:05 |
| jiuzhe
P
|
$104.00 | Jun 16 | 12:54:00 |
| first1 | $104.00 | Jun 16 | 12:54:00 |
| jiuzhe | $99.00 | Jun 16 | 12:53:28 |
| first1 | $94.00 | Jun 16 | 11:59:36 |
| namecheap
P
|
$89.00 | Jun 16 | 11:59:30 |
| first1 | $84.00 | Jun 16 | 11:59:30 |
| namecheap
P
|
$79.00 | Jun 16 | 10:35:58 |
| first1 | $74.00 | Jun 16 | 10:35:58 |
| namecheap | $69.00 | Jun 16 | 09:57:41 |
| nameword | $64.00 | Jun 15 | 19:00:43 |
| first1 | $59.00 | Jun 13 | 12:20:35 |
| jiuzhe | $59.00 | Jun 13 | 12:20:35 |
| namecheap | $59.00 | Jun 13 | 12:20:35 |
| mikucn | $59.00 | Jun 13 | 12:20:35 |
| Bidder | Bid | Date | Time |
|---|---|---|---|
| first1
High Bid
|
$11,750.00 | May 20 | 13:44:16 |
| first1
High Bid
|
$11,750.00 | May 20 | 13:44:16 |
| Alibackorders
P
|
$11,700.00 | May 20 | 13:44:08 |
| first1 | $11,650.00 | May 20 | 13:44:08 |
| Alibackorders | $11,600.00 | May 20 | 13:43:57 |
| first1 | $11,550.00 | May 20 | 13:39:02 |
| Alibackorders | $11,500.00 | May 20 | 13:38:52 |
| first1 | $11,450.00 | May 20 | 13:37:00 |
| Alibackorders | $11,400.00 | May 20 | 13:36:48 |
| first1 | $11,350.00 | May 20 | 13:36:05 |
| Alibackorders | $11,300.00 | May 20 | 13:35:52 |
| first1 | $11,250.00 | May 20 | 13:34:34 |
| Alibackorders | $11,200.00 | May 20 | 13:34:23 |
| first1 | $11,150.00 | May 20 | 13:31:18 |
| Alibackorders | $11,100.00 | May 20 | 13:31:09 |
| first1 | $11,050.00 | May 20 | 13:30:45 |
| Alibackorders
P
|
$11,000.00 | May 20 | 13:30:36 |
| first1 | $11,000.00 | May 20 | 13:30:35 |
| Alibackorders | $10,950.00 | May 20 | 13:30:19 |
| first1 | $10,900.00 | May 20 | 13:29:55 |
| Alibackorders
P
|
$10,850.00 | May 20 | 13:29:47 |
| first1 | $10,850.00 | May 20 | 13:29:47 |
| Alibackorders | $10,800.00 | May 20 | 13:29:38 |
| first1 | $10,750.00 | May 20 | 13:29:21 |
| first1
High Bid
|
$10,750.00 | May 20 | 13:29:21 |
| Alibackorders
P
|
$10,700.00 | May 20 | 13:29:08 |
| first1 | $10,700.00 | May 20 | 13:29:08 |
| Alibackorders | $10,650.00 | May 20 | 13:28:49 |
| first1 | $10,600.00 | May 20 | 13:28:09 |
| Alibackorders
P
|
$10,550.00 | May 20 | 13:27:48 |
| first1 | $10,550.00 | May 20 | 13:27:48 |
| Alibackorders | $10,500.00 | May 20 | 13:27:40 |
| first1 | $10,450.00 | May 20 | 13:27:20 |
| Alibackorders | $10,400.00 | May 20 | 13:27:03 |
| first1 | $10,350.00 | May 20 | 13:26:39 |
| Alibackorders | $10,300.00 | May 20 | 13:26:31 |
| first1 | $10,250.00 | May 20 | 13:26:00 |
| Alibackorders | $10,200.00 | May 20 | 13:25:46 |
| first1 | $10,150.00 | May 20 | 13:25:19 |
| Alibackorders | $10,100.00 | May 20 | 13:25:04 |
| first1 | $10,050.00 | May 20 | 13:24:47 |
| Alibackorders | $10,000.00 | May 20 | 13:24:21 |
| first1 | $9,950.00 | May 20 | 13:23:55 |
| Alibackorders | $9,900.00 | May 20 | 13:23:35 |
| first1 | $9,850.00 | May 20 | 13:22:24 |
| Alibackorders | $9,800.00 | May 20 | 13:22:12 |
| first1 | $9,750.00 | May 20 | 13:19:12 |
| Alibackorders | $9,700.00 | May 20 | 13:18:56 |
| first1 | $9,650.00 | May 20 | 13:17:31 |
| Alibackorders
P
|
$9,600.00 | May 20 | 13:17:15 |
| first1 | $9,600.00 | May 20 | 13:17:15 |
| Alibackorders | $9,550.00 | May 20 | 13:16:54 |
| first1 | $9,500.00 | May 20 | 13:16:28 |
| Alibackorders | $9,450.00 | May 20 | 13:16:12 |
| first1 | $9,400.00 | May 20 | 13:15:04 |
| Alibackorders | $9,350.00 | May 20 | 13:14:42 |
| first1 | $9,300.00 | May 20 | 13:13:38 |
| Alibackorders | $9,250.00 | May 20 | 13:13:13 |
| first1 | $9,200.00 | May 20 | 13:11:49 |
| Alibackorders | $9,150.00 | May 20 | 13:11:31 |
| first1 | $9,100.00 | May 20 | 13:10:17 |
| Alibackorders | $9,050.00 | May 20 | 13:09:53 |
| first1 | $9,000.00 | May 20 | 13:07:49 |
| Alibackorders | $8,950.00 | May 20 | 13:07:28 |
| first1 | $8,900.00 | May 20 | 13:06:47 |
| Alibackorders | $8,850.00 | May 20 | 13:06:37 |
| first1 | $8,800.00 | May 20 | 13:05:16 |
| Alibackorders | $8,750.00 | May 20 | 13:04:41 |
| first1 | $8,700.00 | May 20 | 13:03:30 |
| Alibackorders | $8,650.00 | May 20 | 13:03:09 |
| first1 | $8,600.00 | May 20 | 13:02:25 |
| Alibackorders | $8,550.00 | May 20 | 13:01:46 |
| first1 | $8,500.00 | May 20 | 13:00:03 |
| Alibackorders | $8,450.00 | May 20 | 12:59:22 |
| first1 | $8,400.00 | May 20 | 12:58:35 |
| Alibackorders
P
|
$8,350.00 | May 20 | 12:57:56 |
| first1 | $8,350.00 | May 20 | 12:57:56 |
| Alibackorders | $8,300.00 | May 20 | 12:57:17 |
| first1 | $8,250.00 | May 20 | 12:56:51 |
| Alibackorders | $8,200.00 | May 20 | 12:56:33 |
| first1 | $8,150.00 | May 20 | 12:54:52 |
| Alibackorders | $8,100.00 | May 20 | 12:54:40 |
| first1 | $8,050.00 | May 20 | 12:49:05 |
| DefendOr6
P
|
$8,000.00 | May 20 | 12:48:30 |
| first1 | $8,000.00 | May 20 | 12:48:30 |
| DefendOr6
P
|
$7,950.00 | May 20 | 12:48:03 |
| first1 | $7,900.00 | May 20 | 12:48:03 |
| DefendOr6
P
|
$7,850.00 | May 20 | 12:47:29 |
| first1 | $7,800.00 | May 20 | 12:47:29 |
| DefendOr6
P
|
$7,750.00 | May 20 | 12:46:57 |
| first1 | $7,700.00 | May 20 | 12:46:57 |
| DefendOr6
P
|
$7,650.00 | May 20 | 12:46:25 |
| first1 | $7,600.00 | May 20 | 12:46:25 |
| DefendOr6
P
|
$7,550.00 | May 20 | 12:45:57 |
| first1 | $7,500.00 | May 20 | 12:45:56 |
| DefendOr6
P
|
$7,450.00 | May 20 | 12:45:22 |
| first1 | $7,400.00 | May 20 | 12:45:22 |
| DefendOr6
P
|
$7,350.00 | May 20 | 12:45:09 |
| first1 | $7,300.00 | May 20 | 12:45:09 |
| DefendOr6
P
|
$7,250.00 | May 20 | 12:42:03 |
| first1 | $7,200.00 | May 20 | 12:42:03 |
| DefendOr6
P
|
$7,150.00 | May 20 | 12:39:57 |
| first1 | $7,100.00 | May 20 | 12:39:57 |
| DefendOr6
P
|
$7,050.00 | May 20 | 12:37:47 |
| first1 | $7,000.00 | May 20 | 12:37:47 |
| DefendOr6
P
|
$6,950.00 | May 20 | 12:35:37 |
| first1 | $6,900.00 | May 20 | 12:35:37 |
| DefendOr6
P
|
$6,850.00 | May 20 | 12:33:28 |
| first1 | $6,800.00 | May 20 | 12:33:28 |
| DefendOr6
P
|
$6,750.00 | May 20 | 12:31:20 |
| first1 | $6,700.00 | May 20 | 12:31:20 |
| DefendOr6
P
|
$6,650.00 | May 20 | 12:29:14 |
| first1 | $6,600.00 | May 20 | 12:29:14 |
| DefendOr6
P
|
$6,550.00 | May 20 | 12:08:59 |
| doctor | $6,500.00 | May 20 | 12:08:59 |
| DefendOr6
P
|
$6,450.00 | May 20 | 12:08:54 |
| doctor | $6,400.00 | May 20 | 12:08:54 |
| DefendOr6
P
|
$6,350.00 | May 20 | 12:08:47 |
| doctor | $6,300.00 | May 20 | 12:08:47 |
| DefendOr6
P
|
$6,250.00 | May 20 | 12:08:41 |
| doctor | $6,200.00 | May 20 | 12:08:41 |
| DefendOr6
P
|
$6,150.00 | May 20 | 12:08:35 |
| doctor | $6,100.00 | May 20 | 12:08:35 |
| DefendOr6
P
|
$6,050.00 | May 20 | 12:08:26 |
| doctor | $6,000.00 | May 20 | 12:08:26 |
| DefendOr6
P
|
$5,850.00 | May 20 | 12:08:11 |
| doctor | $5,800.00 | May 20 | 12:08:11 |
| DefendOr6
P
|
$5,700.00 | May 20 | 12:07:57 |
| doctor | $5,650.00 | May 20 | 12:07:57 |
| DefendOr6
P
|
$5,600.00 | May 20 | 12:07:49 |
| doctor | $5,550.00 | May 20 | 12:07:49 |
| DefendOr6
P
|
$5,500.00 | May 20 | 12:07:43 |
| doctor | $5,450.00 | May 20 | 12:07:42 |
| DefendOr6
P
|
$5,400.00 | May 20 | 12:07:34 |
| doctor | $5,350.00 | May 20 | 12:07:34 |
| DefendOr6
P
|
$5,300.00 | May 20 | 12:07:24 |
| doctor | $5,250.00 | May 20 | 12:07:24 |
| DefendOr6
P
|
$5,200.00 | May 20 | 12:07:15 |
| doctor | $5,150.00 | May 20 | 12:07:15 |
| DefendOr6 | $5,100.00 | May 20 | 08:26:08 |
| Alibackorders | $5,050.00 | May 20 | 08:22:18 |
| DefendOr6
P
|
$5,004.00 | May 20 | 08:22:18 |
| DefendOr6
P
|
$2,354.00 | May 20 | 07:07:35 |
| Alibackorders | $2,304.00 | May 20 | 07:07:35 |
| DefendOr6
P
|
$2,254.00 | May 19 | 07:53:32 |
| yijiebackorder | $2,204.00 | May 19 | 07:53:32 |
| DefendOr6 | $2,154.00 | May 19 | 06:35:52 |
| ggggggggg | $2,104.00 | May 18 | 06:42:00 |
| 168888 | $2,054.00 | May 18 | 05:57:58 |
| lueecer | $2,004.00 | May 18 | 05:06:49 |
| okload
P
|
$2,000.00 | May 18 | 05:06:49 |
| okload
P
|
$1,954.00 | May 18 | 05:06:44 |
| lueecer | $1,904.00 | May 18 | 05:06:44 |
| okload
P
|
$1,854.00 | May 18 | 05:06:40 |
| lueecer | $1,804.00 | May 18 | 05:06:40 |
| okload
P
|
$1,754.00 | May 18 | 05:06:33 |
| lueecer | $1,704.00 | May 18 | 05:06:33 |
| okload
P
|
$1,654.00 | May 18 | 05:05:21 |
| DomainKing | $1,604.00 | May 18 | 05:05:21 |
| okload | $1,554.00 | May 18 | 01:33:43 |
| DefendOr6
P
|
$1,504.00 | May 18 | 01:33:34 |
| okload | $1,500.00 | May 18 | 01:33:33 |
| DefendOr6
P
|
$1,050.00 | May 18 | 01:33:25 |
| okload | $1,000.00 | May 18 | 01:33:25 |
| DefendOr6
P
|
$550.00 | May 18 | 01:33:16 |
| okload | $500.00 | May 18 | 01:33:16 |
| DefendOr6 | $134.00 | May 18 | 00:07:20 |
| hubaba | $124.00 | May 17 | 21:21:47 |
| Alibackorders | $114.00 | May 17 | 20:35:49 |
| DefendOr6 | $104.00 | May 17 | 20:25:46 |
| Alibackorders | $99.00 | May 17 | 17:16:11 |
| 8a65294220 | $94.00 | May 17 | 15:31:17 |
| Alibackorders | $89.00 | May 17 | 14:43:17 |
| bosskk | $84.00 | May 17 | 14:42:27 |
| Alibackorders | $79.00 | May 17 | 14:28:00 |
| CatchTheDrop | $74.00 | May 17 | 13:06:35 |
| Alibackorders | $69.00 | May 17 | 13:02:58 |
| julianhuang
P
|
$66.00 | May 17 | 13:02:58 |
| julianhuang | $64.00 | May 17 | 12:47:31 |
| zghua01 | $59.00 | May 17 | 12:47:31 |
| 1234ketang | $59.00 | May 17 | 12:47:31 |
| Doomain | $59.00 | May 17 | 12:47:31 |
| Alibackorders | $59.00 | May 17 | 12:47:31 |
| wapjingle | $59.00 | May 17 | 12:47:31 |
| wisely | $59.00 | May 17 | 12:47:31 |
| yijiebackorder | $59.00 | May 17 | 12:47:31 |
| dunfucom | $59.00 | May 17 | 12:47:31 |
| szdomains | $59.00 | May 17 | 12:47:31 |
| jiuzhe | $59.00 | May 17 | 12:47:31 |
| Makrani | $59.00 | May 17 | 12:47:31 |
| 123936216 | $59.00 | May 17 | 12:47:31 |
| OneChina | $59.00 | May 17 | 12:47:31 |
| tintin | $59.00 | May 17 | 12:47:31 |
| ckrgksanrndghk | $59.00 | May 17 | 12:47:31 |
| inosity | $59.00 | May 17 | 12:47:31 |
| guest5 | $59.00 | May 17 | 12:47:31 |
| first1 | $59.00 | May 17 | 12:47:31 |
| encgtheltg | $59.00 | May 17 | 12:47:31 |
| Dotman | $59.00 | May 17 | 12:47:31 |
| Sherrys | $59.00 | May 17 | 12:47:31 |
| nameword | $59.00 | May 17 | 12:47:31 |
| DefendOr6 | $59.00 | May 17 | 12:47:31 |
| namecheap | $59.00 | May 17 | 12:47:31 |
| Jokers | $59.00 | May 17 | 12:47:31 |
| somealias | $59.00 | May 17 | 12:47:31 |
| dotmedia | $59.00 | May 17 | 12:47:31 |
| danny9 | $59.00 | May 17 | 12:47:31 |
所以 一定不能在服务运行时 mv war 文件 。、
备份文件 ,建议直接tar解压后的文件夹 然后复制到其他路径 。
服务器一定要有一个能运行的备份war包作为应急使用 。