那么我们分别来对比debug级别和info级别对性能的影响。
本地tomcat85
java7
jmeter
线程500
网络宽带也会有所影响。
网络是数据库基础架构的主要部分。但是,通常性能基准测试是在本地计算机上完成的,客户端和服务器并置在一起。这样做是为了简化结构并排除一个以上的变量(网络部分),但是我们也忽略了网络对性能的影响。对于像 MySQL Group Replication 这样的产品集群来说,网络更为重要。在这篇文章中,我将介绍网络设置。这些都是简单而微不足道的,但却是让我们更了解复杂网络设置效果的基石。
安装我将使用两台裸机服务器,通过专用的 10Gb 网络连接。我将通过使用 ethtool-s eth1 speed1000duplex full autoneg off 命令更改网络接口速度来模拟 1Gb 网络。
我将运行一个简单的基准:sysbench oltp_read_only --mysql-ssl=on --mysql-host=1721601 --tables=20 --table-size=10000000 --mysql-user=sbtest --mysql-password=sbtest --threads=$i --time=300 --report-interval=1 --rand-type=pareto
运行时线程数从 1 到 2048 不等。所有数据都适合内存 -innodb_buffer_pool_size 足够大。因此工作负载在内存中占用大量 CPU:没有 IO 开销。 *** 作系统:Ubuntu 1604
N1 基准-网络带宽在第一个实验中,我将比较 1Gb 网络和 10Gb 网络。显然,1Gb 网络性能是这里的瓶颈,如果我们迁移到 10Gb 网络,我们可以显着改善我们的结果。要查看 1Gb 网络是瓶颈,我们可以检查 PMM(percona 的数据库监控管理开源工具) 中的网络流量图表:
我们可以看到我们的吞吐量达到了 116 MiB/s(或 928 Mb/s),这非常接近网络带宽。但是,如果我们的网络基础设施仅限于 1Gb,我们可以做些什么?
N2 基准-协议压缩MySQL 协议中有一个功能,您可以看到客户端和服务器之间的网络交换压缩:--mysql-compression=on。让我们看看它将如何影响我们的结果。
这是一个有趣的结果。当我们使用所有可用的网络带宽时,协议压缩实际上有助于改善结果。
但是 10Gb 网络不是这种情况。压缩/解压缩所需的 CPU 资源是一个限制因素,通过压缩,吞吐量实际上只达到我们没有压缩的一半。现在让我们谈谈协议加密,以及如何使用 SSL 影响我们的结果。
N3基准-网络加密
对于 1Gb 网络,SSL 加密显示了一些损失 - 单线程约为 10% - 但是否则我们再次达到带宽限制。我们还看到了大量线程的可扩展性,这在 10Gb 网络案例中更为明显。使用 10Gb 时,SSL 协议在 32 个线程后不会扩展。实际上,它似乎是 MySQL 目前使用的 OpenSSL 10 中的可伸缩性问题。在我们的实验中,我们看到 OpenSSL 111 提供了更好的可伸缩性,但是您需要从链接到OpenSSL 111 的源代码中获得特殊的 MySQL 构建才能实现这一点。我没有在这里展示它们,因为我们没有生产二进制文件。
结论
1 网络性能和利用率将影响一般应用程序吞吐量。
2 检查您是否达到了网络带宽限制。
3 如果受到网络带宽的限制,协议压缩可以改善结果,但如果不是,则可能会使事情变得更糟。
4 SSL 加密在线程数量较少的情况下会有一些损失(约10%),但对于高并发工作负载,它不会扩展。
一、在SQL Server中存储过程不会影响性能。\x0d\1、只会大大的减轻服务器的压力,而不会增加,只有不合理的存储过程才会造成服务器性能下降的恶果。一个大型的数据库,一般存储过程也不会超过几千个,对当前的数据库及它依附的硬件来说,这点儿负载是大象身上的老鼠,负载基本可以_略不计。\x0d\2、但是,存储过程是批量的SQL语句的合成,如果设计上混乱,引发死循环、死锁、大范围查询、临时表没有及时清理释放等问题的情况下,是会严重影响服务器性能的,但这根子不在存储过程上,而在于存储过程的设计上。错误的SQL代码指挥服务器,无论它的形式是存储过程,还是客户端及时发向数据库的请求,都会使服务器出现问题。\x0d\\x0d\二、相关扩展\x0d\1、在当前,针对数据库的编程设计,没有存储过程是不可想象的,这就象某个公司的大型货品仓库中没有仓库保管员一样,所有的货品进出都得进货员或销售员去临时取放,会严重降低工作效率。\x0d\2、存储过程在数据库中无论是否编译好,其效率都要比客户端临时向数据库发送指令调数据来得要高,因为至少减少了发向服务器的指令的量。况且很多的中间值、临时值如果不通过存储过程来实现的话,就只能先全取到客户端,这样会大大增加网络负担与服务器的负钽。\x0d\3、正如微软所说,存储过程来实现,可以使得很多中间量不必传入到客户上,客户端只能得到需要的结果,所以同时可以提高安全。我们知道,服务器是用来提供各类服务的专业计算机,本质上和我们常规的电脑差不多,只不过它的配置更专业一些。不少人误认为服务器买来后布署下服务器环境就行了,其实不是这样的,服务器如果不进行一些优化设置,那性能也得不到最大化发挥。
当你拿到服务器后要进行哪些优化呢?大致可以从:服务器硬件、系统设置、软件环境优化三方面着手。
服务器硬件优化方案
正常情况下服务器硬件优化是在选购服务器之前就定好,因为硬件优化起来是比较麻烦的。
服务器内存越大越好、CPU核心数越多越好;
服务器硬盘不要选择机械硬盘,固态硬盘性能最好;如果预算有限,那建议是固态+机械硬盘组合使用,系统安装在固态盘里;
关闭不必要的外设,如:光驱、蓝牙等。
服务器系统优化方案
系统直接影响服务器的性能及稳定性,首先要选择合适的系统,然后再进行系统优化。
Linux类系统性能和稳定性要优于WindowsServer;
系统一定要安装64位的,不要选择32位系统;
Linux系统内核参数的优化,如:最大打开文件数限制、内核TCP参数等;
如果使用的是云服务器,则可以关闭服务器上的默认防火墙,改用云计算平台提供的在线防火墙;
关闭不必要的系统服务,如:打印服务;
精简开机启动服务等。
软件环境优化
服务器只是硬件,最终服务的运行时环境还是靠服务器端软件来提供的,比如WEB服务器就离不开:WEB容器(Nginx、Apache、Tomcat、IIS)、数据库(MySQL、SQLServer)等支撑。下面总结一些软件环境优化方案,可以满足大多数服务器的需要。
合理使用NoSQL等缓存,可以很大程度缓解后端数据库的压力;
对于高并发场景,考虑集群分布式部署;
数据库量级很大时,就要考虑SQL优化:读写分离、慢查询优化、合理索引等;
消息系统的合理使用等。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流~我是科技领域创作者,十年互联网从业经验,欢迎在线咨询欢迎分享,转载请注明来源:内存溢出
评论列表(0条)