每天的网站吗?服务器每秒要处理多少个请求才能应对?

你想建设一个能承受500万PV/每天的网站吗? 500万PV是什么概念?服务器每秒要处理多少个请求才能应对?如果计算呢?

PV是什么:
PV是page view的简写。PV是指页面的访问次数,每打开或刷新一次页面,就算做一个pv。

计算模型:
每台服务器每秒处理请求的数量=((80%*总PV量)/(24小时*60分*60秒*40%)) / 服务器数量 。
其中关键的参数是80%、40%。表示一天中有80%的请求发生在一天的40%的时间内。24小时的40%是9.6小时,有80%的请求发生一天的9.6个小时当中(很适合互联网的应用,白天请求多,晚上请求少)。

简单计算的结果:
((80%*500万)/(24小时*60分*60秒*40%))/1 = 115.7个请求/秒
((80%*100万)/(24小时*60分*60秒*40%))/1 = 23.1个请求/秒

初步结论:
现在我们在做压力测试时,就有了标准,如果你的服务器一秒能处理115.7个请求,就可以承受500万PV/每天。如果你的服务器一秒能处理23.1个请求,就可以承受100万PV/每天。

Read the rest of this entry »

压力测试及防止恶意压力测试的方法(nginx和apache)

我们使用apache ab进行压力测试,首先看一下如何安装:

Centos系统

yum install httpd-tools

#Ubuntu系统

apt-get install apache2-utils

Read the rest of this entry »

Apache常用管理命令

Apache常用管理命令

开启Apache:

sudo apachectl start

关闭Apache:

sudo apachectl stop

重启Apache:

sudo apachectl restart

参考链接:http://httpd.apache.org/docs/2.4/invoking.html

git 使用及常用命令

1.首先从一个git远程仓库中clone项目到本地

git clone 仓库地址

创建开发分支

一般我们写代码不会在master分支上面写,而是新建一个分支

git checkout -b test

3.在test分支上面进行代码修改,比如完成某一项功能的开发

4.修改完之后提交代码到test分支

git add .
git commit -m “your comment”
5.review代码(非必需)

在test分支上面开发完某一个功能之后,建议自己review一下修改的代码,通过与master分支进行对比

Read the rest of this entry »

Docker常用命令

搜索镜像
docker search nginx

拉取镜像
docker pull nginx

查看已经安装的镜像
docker images

创建容器
docker run -p 8081:80 –name nginx1 -v `pwd`/nginx/html1/:/usr/share/nginx/html/ -v `pwd`/nginx/logs1/:/var/log/nginx/ -d nginx

Read the rest of this entry »

mysql数据库常用操作命令

数据库创建:

create database if not exists fastadmin default charset utf8 collate utf8_general_ci;

数据库删除

drop database fastadmin;

mysql用户操作常用命令

用户创建

create user 'user01_remote'@'%' identified by '123456';

该方式创建的用户无法在本机登陆:

mysql -u user01 -p
Enter password:
ERROR 1045 (28000): Access denied for user 'user01'@'localhost' (using password: YES)

以下方式创建的用户可以在本地登陆:

create user 'user02_localhost'@'localhost' identified by '123456';

Read the rest of this entry »

CentOS 7 中 hostnamectl 的使用

hostnamectl 是在 centos7 中新增加的命令,它是用来修改主机名称的,centos7修改主机名称会比以往容易许多。

用法

# hostnamectl -h

-h --help              显示帮助
--version           显示安装包的版本
--transient         修改临时主机名
--static            修改瞬态主机名
--pretty            修改灵活主机名
-P --privileged        在执行之前获得的特权
--no-ask-password   输入密码不提示
-H --host=[USER@]HOST  操作远程主机

Commands:
status                 显示当前主机名设置
set-hostname NAME      设置系统主机名
set-icon-name NAME     为主机设置icon名
set-chassis NAME       设置主机平台类型名

Read the rest of this entry »

| |

pip常用命令总结

pip是python下的一款包管理工具,在此总结一下pip的常用命令。

获取帮助

pip --help

升级 pip

pip install -U pip

Read the rest of this entry »

mac版sublime快捷键总结

打开/前往

⌘T     前往文件   
⌘⌃P    前往项目   
⌘R     前往    method   
⌘⇧P    命令提示   
⌃G     前往行   
⌘KB    开关侧栏   
⌃`     python    控制台   
⌘⇧N    新建窗口

Read the rest of this entry »

|

brew常用命令总结

安装软件

brew install packageName

示例:

brew install httpd

卸载软件

brew uninstall packageName

示例:

brew uninstall httpd

Read the rest of this entry »

|

电商app运营指标总结

用户数
是指应用或网站累计的用户数量。

UV
UV(网站独立访客)是unique visitor的简写,是指通过互联网访问、浏览这个网页的自然人。

Read the rest of this entry »

|

FHIR介绍

HL7 FHIR介绍
FHIR-Fast Health Interoperable Resources(快捷健康互操作资源)(hl7.org/fhir):是由HL7创建的下一代标准框架。FHIR结合HL7 V2、V3和CDA产品线的最佳功能,同时利用最新Web标准,紧密地关注于可实施性方面。 Read the rest of this entry »

|

keepalived总结

一、Keepalived介绍
Keepalived是Linux下一个轻量级的高可用解决方案,它与HeartBeat、RoseHA实现的功能类似,都可以实现服务或者网络的高可用,但是又有差别:HeartBeat是一个专业的、功能完善的高可用软件,它提供了HA软件所需的基本功能,比如心跳检测和资源接管,监测集群中的系统服务,在群集节点间转移共享IP地址的所有者等,HeartBeat功能强大,但是部署和使用相对比较麻烦;与HeartBeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有HeartBeat功能强大,但Keepalived部署和使用非常简单,所有配置只需一个配置文件即可完成。这也是本章重点介绍Keepalived的原因。 Read the rest of this entry »

|

Nginx配置upstream实现负载均衡

如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。具体配置过程如下:

1. 在http节点下,添加upstream节点。

Read the rest of this entry »

OSI七层模型简介

OSI(开放式系统互联模型)是一个开放性的通行系统互连参考模型,是一个协议规范。它把网络协议从逻辑上分了七层,每一层都有对应的物理设备。

OSI七层模型是一种框架性的设计方法,设计的主要目的是为了解决异种网络互联时遇到的兼容问题,主要功能就是帮助不同类型的主机实现数据传输。最大优点是将服务,协议,接口三者明确的区分开来,通过七个层次化的结构模型使得不同的主机不同的网络之间实现可靠的通讯。

Read the rest of this entry »

iterator详解以及和for循环的区别

迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部。
Read the rest of this entry »

java中URLEncoder.encode与URLDecoder.decode处理url特殊参数的方法

最近在使用 url 的 queryString 传递参数时,因为参数的值,被DES加密了,而加密得到的是 Base64的编码字符串
类似于:

za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g==

显然 这里面含有了 特殊字符: / + = 等等,如果直接通过url 来传递该参数:

url = "xxxxx?param=" + "za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g==";

Read the rest of this entry »

|

memcached使用上的一些限制

1、过期时间限制
memcached的过期时间并不能随便设置,有一个最大时限就是30天,若超过30天后,存储时返回true,但是在取数据的时候取不到。(在取数据的时候才去做验证,看看数据是否失效)

说到这个过期时间了,就不得不说说memcached的缓存失效策略:
memcached的缓存失效策略是LRU(最近最少使用)加上到期失效策略。当向memcached存储数据时,你可能会设置一个过期时间,可以是永久也可以是一段时间,但是如果一旦给memcached分配的内存使用完毕,则首先会替换掉已失效的数据,其次是最近最少使用的数据。

Read the rest of this entry »

thymeleaf标签th:class使用

两种方式都可以使用。

方法1:

<!--/*@thymesVar id="posts" type="java.util.List"*/-->
<span th:each="post:${posts}" th:class="*{'row-'+{id} + ' parent-row-' + {id}}">
<div class="list">
<p th:id="${post.id}" th:text="${post.content}"></p>
<a th:href="@{/delete/__${post.id}__}">删除</a>
<hr/>
</div>
</span>

方法2:

<!--/*@thymesVar id="posts" type="java.util.List"*/-->
<span th:each="post:${posts}" th:class="'row-' + *{id} + ' parent-row-' + *{id}">
<div class="list">
<p th:id="${post.id}" th:text="${post.content}"></p>
<a th:href="@{/delete/__${post.id}__}">删除</a>
<hr/>
</div>
</span>

第 1 页,共 67 页12345...102030...最旧 »