-
2018-02-25 16:30:49
nginx禁止ip直接访问
方法一,ban
#别人如果通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500 server { listen 80 default; server_name _; return 500; } #开放一个或多个真实的希望被访问的域名配置,设置如下: server { linten 80; server_name www.domain.com; }
方法二,跳转
#别人如果通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以将他跳转到正常的域名访问 server { listen 80 dufault; server_name _; rewrite ^(.*) http://www.domain.net permanent; } #开放一个或多个真实的希望被访问的域名配置,设置如下: server { linten 80; server_name www.domain.com; }
关于rewrite:
rewrite regex replacement flag 关键字 正则 替代内容 flag标记 其中关键字error_log不能改变 perl兼容正则表达式语句进行规则匹配 将正则匹配的内容替换成replacement rewrite支持的flag标记 flag标记说明: last #本条规则匹配完成后,继续向下匹配新的location URI规则 break #本条规则匹配完成即终止,不再匹配后面的任何规则 redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址 permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
限制下载速度
location /download { limit_rate 128k; } #如果想设置用户下载文件的前10m大小时不限速,大于10m后再以128kb/s限速可以增加以下配内容,修改nginx.conf文件 location /download { limit_rate_after 10m; limit_rate 128k; }
限制链接并发数
HttpLimitZoneModule 限制并发连接数实例
limit_zone只能定义在http作用域,limit_conn可以定义在http server location作用域
http { limit_conn_zone $binary_remote_addr zone = conn:10m; #定义一个名为conn的limit_conn_zone用来存储session,大小是10M内存,1M能存储16000个状态; #$binary_remote_addr是限制同一客户端ip地址; #$server_name是限制同一server最大并发数; limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s; #定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,1M能存储16000个状态,以$binary_remote_addr为key,限制平均每秒的请求为20个,rate的值必须为整数,如果限制两秒钟一个请求,可以设置成30r/m server{ location { limit_conn conn 20; #limit_conn为限制并发连接数; limit_rate 500k; #limit_rate为限制下载速度; limit_req zone=allips burst=5 nodelay; #限制每ip每秒不超过20个请求,漏桶数burst为5,brust的意思是,如果第1秒、2,3,4秒请求为19个,第5秒的请求为25个是被允许的。但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。nodelay,如果不设置该选项,严格使用平均速率限制请求数,第1秒25个请求时,5个请求放到第2秒执行,设置nodelay,25个请求将在第1秒执行。 } }
更多相关内容 -
高并发模拟多个用户同时访问接口
2020-07-09 19:01:56前些天客户需要测试一下接口可以承受多大的并发量!!! 当时就想到了countDownLatch,就小小的提了一下意见就被安排到我的头上! 废话就不多说了(为了不浪费你们的时间,先说好这代码是测试单个接口或者方法的并发...前些天客户需要测试一下接口可以承受多大的并发量!!!
当时就想到了countDownLatch,就小小的提了一下意见就被安排到我的头上!
废话就不多说了(为了不浪费你们的时间,先说好这代码是测试单个接口或者方法的并发量的)。
先说思路,再上代码(整体代码在下边哟)
思路
先定义一个countDownLatch
//发令枪 CountDownLatch countDownLatch = new CountDownLatch(10);
countDownLatch 就是一个发令枪,比如操场上的赛跑一样,十个运动员,要十个运动员全部到场才可以开始,每当到场一个运动员,需要等待的运动员数量就会少一个,当等待的运动员数量为0时。裁判员枪声一响,就开始赛跑了。
这里的运动员数量减一就要用的countDownLatch.countDown();这一个方法。
那么先到的运动员说:我为什么要等他们呢? 就因为countDownLatch.await();这一个方法。等待数量不为0时都需要在这里阻塞着等待着其他运动员。
然后把你所要测试的接口或者方法写在**countDownLatch.await()**下面就可以了。
思路就是这么个思路,中间还会用到线程池这些。
话不多说,直接贴代码!!!
图解
代码
import org.apache.http.HttpEntity; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.util.concurrent.*; public class hightConcurrent { static int num = 0; //访问失败次数 static int fwnum = 0; // 总访问次数 int ThreadNum = 100; //定义线程数 // static List<Map<String,Object>> infences = new ArrayList<>(); //发令枪 CountDownLatch countDownLatch = new CountDownLatch(ThreadNum); public void runThread() { //定义线程池 ExecutorService executorService = Executors.newFixedThreadPool(ThreadNum); for (int i = 0; i < ThreadNum; i++) { executorService.submit(buildThread()); } } public Thread buildThread() { //创建线程 Thread thread = new Thread(new Runnable() { public void run() { synchronized (countDownLatch) { //这一步不知道有没有必要,但是我还是加了 //发令枪减1 countDownLatch.countDown(); } try { System.out.println("线程:" + Thread.currentThread().getName() + "准备"); //线程阻塞 countDownLatch.await(); //这一步是调用线上的接口,发送HTTP请求 127.0.0.1可以换成你的ip地址 post是我的请求方式 Object appectContext = appectContext("http://127.0.0.1:9300/related/game/getFeatured", "post"); fwnum++; //访问的总次数 if (appectContext == null) { num++; //访问失败的次数 } System.out.println("接受的值" + appectContext); System.out.println("错误次数" + num); System.out.println("总次数" + fwnum); } catch (InterruptedException e) { e.printStackTrace(); } } }); return thread; } public static void main(String[] args) { hightConcurrent h = new hightConcurrent(); h.runThread(); } public Object appectContext(String url, String states) { // 配置请求信息(请求时间) RequestConfig rc = RequestConfig.custom().setSocketTimeout(5000) .setConnectTimeout(5000).build(); // 获取使用DefaultHttpClient对象 CloseableHttpClient httpclient = HttpClients.createDefault(); // 返回结果 String result = null; if (url != null) { //请求路径不是null if (states.equals("post")) { //post请求 //System.out.println("post请求"); HttpPost httpPost = new HttpPost(url); //这些post请求和get请求我就不多说了 json格式的参数自己在网上搜一搜 httpPost.setConfig(rc); try { CloseableHttpResponse response = httpclient.execute(httpPost); HttpEntity entity = response.getEntity(); result = EntityUtils.toString(entity, "UTF-8"); return result; } catch (IOException e) { e.printStackTrace(); } } else if (states.equals("get")) { //get请求 //System.out.println("get请求"); HttpGet httpGet = new HttpGet(url); httpGet.setConfig(rc); try { CloseableHttpResponse response = httpclient.execute(httpGet); return response; } catch (IOException e) { e.printStackTrace(); } } else { System.out.println("请求失败"); } } else { //传的路径是null System.out.println("路径是null"); } return null; } }
效果图
这就是一个完整的测试流程!
主要是要理解CountDownLatch,这个就很好写了!!
当然还有其他方法了,这只是一个省事的方法,如果有错误的地方还请指点一二。
不要批评我,我不接受批评,如果你批评我,那我就生气。 -
redis百万并发访问数据库测试
2016-08-18 10:39:47redis百万并发访问数据库测试代码 -
如何查看服务器当前的并发访问量
2020-04-14 08:37:06服务器访问人数可以通过命令:netstat -pnt |grep:80列出 比如此时请求服务器上一个页面,通过该命令可以查看结果,后面的ESTABLISHED表示服务器正在被访问,可以...因为服务器本身占用一个连接,所以此时并发...服务器访问人数可以通过命令: netstat -pnt | grep :80 列出
比如此时请求服务器上一个页面,通过该命令可以查看结果,后面的ESTABLISHED表示服务器正在被访问,可以通过添加 wc -l 统计数量,最终命令是: netstat -pnt | grep :80 | wc -l 此命令可以统计服务器所有url被请求的数量
因为服务器本身占用一个连接,所以此时并发数是1个用户访问,当关闭网页后输入命令会发现还是2个用户,实际上查看详细信息都是从ESTABLISHED变成了FIN_WAIT2超时状态,因为http有一个保持连接的时间,过一会再查看用户数就为1了,此时说明所有连接都彻底断开了,访问一个页面后再访问另一个页面,之前的http超时时间将加快,所以当连续访问网站时,连接总体上还是保持稳定的
-
Http服务器并发访问压力测试工具(修正版,免积分)
2014-03-26 16:44:42因为自己需要写一个Http服务器,不知道能接受多少并发和性能,于是自己写了一个简单的Http Post/Get并发访问测试软件。 项目是基于.Net Framework4 C#开发的,所以运行设备需事先安装该环境,也就40M,自己百度一下... -
高并发访问解决方法
2018-03-09 16:06:35经过查资料,方案如下所示。 1 从最基础的地方做起,优化...对于String连接操作,使用 StringBuffer或StringBuilder,对于工具类可以通过静态方法来访问。 b、避免使用错误的方式,尽量不用instanceof做条件判...经过查资料,方案如下所示。
1
从最基础的地方做起,优化我们写的代码,减少必要的资源浪费。
a、避免频繁的使用
new
对象,对于整个应用只需要存在一个实例的类,我们可以使用单例模式。对于String连接操作,使用 StringBuffer或StringBuilder,对于工具类可以通过静态方法来访问。
b、避免使用错误的方式,尽量不用
instanceof
做条件判断。使用java中效率高的类,比如ArrayList比Vector性能好。
2
html静态化
我们通过一个链接地址访问,通过这个链接地址,服务器对应的模块处理这个请求,转到对应的jsp页面,最后生成我们要的数据。但是,如果上千万个请求的话,有太多的高并发请求,那么就会加重服务器的压力,最坏的情况是把服务器down掉。那么如何避免这种情况的出现呢?如果我们把最初对test.
do
的请求结果保存成一个html文件,然后每次用户都去访问这个html文件,这样就不用再去访问服务器了,服务器的压力不就减少了?
那如何自动的生成静态页面,当用户去访问,会自动的生成test.html ,然后再显示给用户。
3
图片服务器分离
对于web服务器来说,图片是最消耗资源的,于是我们有必要把图片与页面进行分离,我们把图片放到独立的图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片的问题而崩溃。在图片服务器上,我们可以对不同的配置进行优化。
4
缓存
具体接触过的缓存机制是hibernate的缓存机制。为了避免每次都向数据库中取得数据,我们把用户常常访问到的数据放到内存中,甚至缓存十分大的时候我们可以把内存中的缓存放到硬盘中。还有高级的分布式缓存数据库使用,都可以增加系统的抗压力。
5
分批传送
在做某项目的时候,一次传递的参数太多,而且数据库规定一次最多传递的参数最多是三万条,当时有五万条记录,那怎么传送呢?最终是分批传送,电梯里一次乘不下那么多的人,会报超重的bug,那就分批把人送上去。
还有一次在考试系统中,如果那么多的考试人员同时提交到数据库中,数据库的压力增大,有时会被down掉,当时采用的方法是使用ajax异步传输,没有等待考生点击提交按钮的时候,就把考生的答案自动提交,这样也避免了突然断电考生前面做过的题出现丢失的现象。
6
数据库集群
当面对复杂的应用,用户大量访问的时候,一台数据很快无法满足需求,于是我们需要使用数据库集群或者库表散列。
我们在应用程序中安装业务和应用或者功能模块将数据进行分离,不同的模块对应不同的数据库或表,再按照一定的策略对某个页面或者功能进行更小的数据库散列。
7
DB优化
a、在数据库设计的时候就要考虑到后期的维护,数据库三范式是我们设计数据库索要遵循的原则。
b、索引的建立:建立索引要适当,如果一个表经常用来被查询,对于增加和修改很少被用到,我们就可以为这个表建立索引,因为对于增加和修改和删除操作时,我们对索引的维护要大大超过索引给我们带来的效率。
c、表字段的类型选择要恰当
包括字段的长度、类型等,要根据实际存储的数据进行选择,长度不要过长,否则会影响效率。
d、外键要慎用,因为主键代表这一张表,而外键代表一群表,对表之间进行了关联,在删除修改等需要我们关联。
e、在数据库操作上
尽量使用prepareStatement,少用Statement,因为PrepareStatement是进行预编译的。
connection设置为readOnly,Connection是对书库连接,属于重量级,我们使用即可。
连接池的使用,我们可以修改数据库默认的连接数。
-
并发实例,10000个http请求同时访问tomcat,tomcat是怎么处理的?
2018-11-12 17:50:48并发实例,10000个http请求同时访问tomcat,tomcat是怎么处理的? 链接:https://blog.csdn.net/Ideality_hunter/article/details/72770813 -
并发性能与访问量
2017-02-08 14:02:50不好意思,访问量和并发性能有时候真的没啥直接关系。 假设一个系统每分钟60个访问,表面看来系统没什么压力。但是,假设你的系统在做一个秒抢的活动,好的,这60个访问挤在第一秒一下子来了,你看,访问量没什么... -
sqlite并发访问
2018-03-31 12:10:47其实还可以考虑分库,把需要并发访问控制的表放到单独的数据库文件中。解决问题的方法通常有很多,根据实际的项目情况,用不同的方案。只是以上这两个方法都不算是特别好的方案。 使用了多线程互斥锁,多进程... -
服务器带宽10M能带多少人同时访问之并发数计算
2020-05-26 21:29:5710M带宽云服务器够多少人同时在线访问?10M公网带宽并发量计算方法,哪个快分享10M带宽云服务器并发数计算方法: 10M带宽服务器并发数计算方法 云服务器10m带宽够多少人同时在线访问?哪个快网先来计算一下10M公网... -
Nginx 配置之后在电脑上的并发访问量比直接使用tomcat的并发访问量低
2017-09-01 03:32:30Nginx 配置之后在电脑上的并发访问量比直接使用tomcat的并发访问量低是什么原因??怎样解决?? -
Linux查看服务器当前的并发访问量
2018-01-06 09:49:31服务器访问人数可以通过命令: netstat -pnt | grep :80 列出,比如此时请求服务器上一个页面,通过该命令可以查看结果,后面的ESTABLISHED表示服务器正在被访问,可以通过添加 wc -l 统计数量,最终命令是: ... -
Java中如何限制方法访问的并发数
2018-08-04 17:15:52并发编程一直是Java基础中的高地,但很多只要有两三年Java基础的工程师,会在简历中很明确的标明“熟悉多线程编程、有高并发编程经验”,来凸显自己编程能力有多厉害,但实际上可能只是看了《Java Concurrency in ... -
高并发访问服务器时前端页面优化方法
2017-04-07 17:53:41高并发访问服务器时前端页面优化方法 -
java多线程并发访问sqlite数据库如何同步和加锁
2018-08-15 01:11:33如题, 使用java语言,sqlite数据如何解决多线程同步锁的问题 -
Jmeter模拟多用户并发访问
2020-01-17 09:48:48记录一下本次模拟生产环境并发的场景 下载JMeter 官方文档 打开JMeter 在测试计划下创建线程组并设置 这里要模拟多用户,所以线程数设置要大于1,这里设置为2;Ramp-Up时间,JMeter启动用户所设置的线程数需要的时间... -
【多线程并发访问的安全性问题】
2019-01-06 12:07:32【多线程并发访问的安全性问题】 今天重新温习了一下多线程并发访问的问题,加强下记忆,决定写一些东西记录下来。【持续更新】 多线程并发访问的安全性问题 首先要知道的是:多线程安全性问题产生的原因是什么? ... -
访问量、并发、TPS
2018-05-20 20:55:53PV(访问量): 即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。 UV(独立访客):即Unique Visitor,访问网站的一台电脑客户端为一个...并发数:系统同时处理的请求/事务的数量 响应时间:一般取平均... -
golang之map并发访问
2018-10-23 23:00:34golang中的map不是并发安全的,并发对map读写可能会有问题,如: // N太小时不会(比如10),因机器而异 // fatal error: concurrent map read and map write func mapDemo1() { m := make(map[string]int) go ... -
阿里云服务器4核8g10M带宽配置大概能支持多少并发访问
2021-04-15 14:44:15那么,10M带宽云服务器支持多少人同时在线访问呢?10M带宽下载速度为1280KB/S,以网站应用为例,将设网页优化后的大小为30KB,那么10M带宽云服务器支持在1秒内42个人同时打开网页(1280/30大约是42),所以云服务器... -
Web并发页面访问量统计实现
2018-01-21 09:49:56Web并发页面访问量统计实现 页面访问量统计,可能在上学的时候就讲过如何简单实现,例如在servletContext中保存一个页页面访问次数,然后每访问一次加1;或者每访问一次就把操作记录保存到数据库,这样的处理方式,... -
nginx统计访问量和查看nginx的并发量
2020-04-16 14:38:521.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l 2.统计访问URL统计PV awk '{print $7}' access.log|wc -l 3.查询访问最频繁的URL awk '{print $7}' access.log|sort | uniq -c |sort -n -... -
【高并发】假如你网站一天有千万级访问量高并发,如何破解?
2020-04-10 16:28:03很多小伙伴反馈说,高并发专题学了那么久,但是,在真正做项目时,仍然不知道如何下手处理高并发业务场景!甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发知识如何运用到实际项目中,就... -
模拟大量微信小程序用户对平台进行并发访问的性能测试指引
2019-04-19 13:01:34系统上线之前需要压力测试,本文以“模拟大量微信小程序用户对平台进行并发访问的性能测试”为案例说明。 一、用程序生成访客数据,最好是项目中在用编程语言,我这里用的是JAVA;因为是模拟小程序用户,所以需要... -
数据转发中心高并发访问次数统计(mysql实现)
2017-06-19 15:36:35现在要达到一个需求,做日访问量统计和月访问量统计查询速度要在毫秒级。以前的全表查询就不适用了。为了达到毫秒级的统计速度,需要新建了一张调用次数统计表。字段如下: day,主键,保存当前的日期,使用 -
阿里云服务器4核8G支持多少在线用户并发访问?
2021-02-20 21:59:23阿里云服务器4核8G配置可以容纳多少人同时在线访问呢?阿里云10M带宽支持多少并发数?阿里云4核8G服务器配置如何选择?阿里云服务器10M带宽费用多少?笔者来详细说下: 阿里云4核8G服务器10M带宽并发数计算 阿里云... -
Java解决多用户高并发访问
2017-02-27 17:07:51Java集群--大型网站是怎样解决多用户高并发访问的 时间过得真快,再次登录博客园来写博,才发现距离上次的写博时间已经过去了一个月了,虽然是因为自己找了实习,但这也说明自己对时间的掌控能力还是没... -
IIS配置支持大量用户并发访问解决方法
2019-02-14 15:09:08使用.NET开发的Web应用程序部署到IIS上后,当有大量用户并发访问,用户在访问的时候可能会出现页面打开慢或无法打开的情况,那么从服务器上的IIS上我们可以做以下调整,让应用支持10万级以内的并发访问。 1、调整... -
C# httplistener 简单的高并发http服务器例子
2018-12-22 10:56:47C#调用httplistener实现简单的http服务器例子:编译后是一个控制台应用程序,启动后,可通过 http://127.0.0.1/ 访问,采用了回调模式提供http服务,支持高并发