当前位置: 首页 > news >正文

网站空间域名费seo如何优化网站步骤

网站空间域名费,seo如何优化网站步骤,广东品牌设计公司,百姓网网站建设前言 这是一个 之前使用 spark 的时候 记一次 spark 读取大数据表 OOM OutOfMemoryError: GC overhead limit exceeded 因为一个 OOM 的问题, 当时使用了 fetchSize 的参数 应用服务 hang 住, 导致服务 503 Service Unavailable 在这个问题的地方, 出现了一个查询 32w 的数据…

前言

这是一个 之前使用 spark 的时候 记一次 spark 读取大数据表 OOM OutOfMemoryError: GC overhead limit exceeded 因为一个 OOM 的问题, 当时使用了 fetchSize 的参数 

应用服务 hang 住, 导致服务 503 Service Unavailable 在这个问题的地方, 出现了一个查询 32w 的数据, 呵呵 这里又看了一下 fetchSize 的相关, 需要梳理一下 fetchSize 这块的东西

但是 当时不知道 这个 fetchSize 所影响的 客户端 和 服务器 之间交互的具体的处理 

这里 来看一下 

测试用例 

需要体现是否使用 fetchSize 的差异, 只需要 切换 getDataSource 的 url, 有 "useCursorFetch=true" 为使用 fetchSize 

/*** Test25MysqlFetchSize** @author Jerry.X.He <970655147@qq.com>* @version 1.0* @date 2022-10-15 14:03*/
public class Test25MysqlFetchSize {// Test25MysqlFetchSizepublic static void main(String[] args) {String[] authInfo = {"127.0.0.1", "3306", "test", "postgres", "postgres"};DataSource ds = getDataSource(authInfo[0], Integer.parseInt(authInfo[1]), authInfo[2], authInfo[3], authInfo[4]);JdbcTemplate jdbcTemplate = new JdbcTemplate(ds);jdbcTemplate.setFetchSize(2);String sql = "select * from `user`;";List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);for(Map<String, Object> entity : list) {System.out.println(JSON.toJSONString(entity));}}/*** 根据给定的连接信息 获取数据源** @param ip       ip* @param port     port* @param dbName   dbName* @param username username* @param password password* @return java.sql.Connection* @author Jerry.X.He* @date 2019-08-15 11:50*/public static DataSource getDataSource(String ip, int port, String dbName, String username, String password) {
//    String url = String.format("jdbc:mysql://%s:%d/%s?useUnicode=true&characterEncoding=UTF8&useCursorFetch=true&defaultFetchSize=100", ip, port, dbName);String url = String.format("jdbc:mysql://%s:%d/%s?useUnicode=true&characterEncoding=UTF8", ip, port, dbName);try {return new SimpleDriverDataSource(new Driver(), url, username, password);} catch (Exception e) {return null;}}}

不使用 fetchSize 的场景

客户端发送一个请求, 然后服务器 将所有的数据响应给客户端 

1be571100cf64736b650ee0e6a571437.png

使用 fetchSize 的场景 

可以看到的是 发送了一个 sql, 以及十多条 fetch 的命令到 mysql 服务器 

第一条 fetch 命令, 前 0-100 条数据 

第二条 fetch 命令, 前 100-200 条数据 

 ... 

第N条 fetch 命令, 前 (N-1)*100 - N * 100 条数据 

5bc2b52eed2544349e86dcad5f733962.png

fetchSize 为 100, 总共数据量为 1216, 然后 客户端合计发送了 13 条 fetch 的请求 

4792	4.403080	127.0.0.1	127.0.0.1	MySQL	82	Request Prepare Statement
4795	4.404626	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1207 Ack=1482 Win=406784 Len=0 TSval=966581250 TSecr=966581250
4802	4.407809	127.0.0.1	127.0.0.1	MySQL	71	Request Execute Statement
4805	4.411114	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1222 Ack=1684 Win=406592 Len=0 TSval=966581255 TSecr=966581255
4852	4.424561	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4855	4.426304	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1235 Ack=4795 Win=403456 Len=0 TSval=966581267 TSecr=966581267
4872	4.436417	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4875	4.438114	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1248 Ack=7906 Win=400384 Len=0 TSval=966581277 TSecr=966581277
4876	4.441996	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4879	4.443469	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1261 Ack=11017 Win=397248 Len=0 TSval=966581281 TSecr=966581281
4880	4.446411	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4883	4.447904	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1274 Ack=14128 Win=394112 Len=0 TSval=966581284 TSecr=966581284
4884	4.450804	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4887	4.452125	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1287 Ack=17239 Win=391040 Len=0 TSval=966581287 TSecr=966581287
4888	4.454689	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4891	4.456075	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1300 Ack=20350 Win=387904 Len=0 TSval=966581290 TSecr=966581290
4892	4.458345	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4895	4.459971	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1313 Ack=23461 Win=384832 Len=0 TSval=966581293 TSecr=966581293
4896	4.462152	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4899	4.463530	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1326 Ack=26572 Win=381696 Len=0 TSval=966581296 TSecr=966581296
4900	4.465897	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4903	4.468078	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1339 Ack=29683 Win=378560 Len=0 TSval=966581300 TSecr=966581300
4904	4.469424	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4907	4.471176	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1352 Ack=32794 Win=375488 Len=0 TSval=966581302 TSecr=966581302
4908	4.473213	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4911	4.474650	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1365 Ack=35905 Win=372352 Len=0 TSval=966581304 TSecr=966581304
4912	4.476087	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4915	4.477380	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1378 Ack=39016 Win=369280 Len=0 TSval=966581306 TSecr=966581306
4916	4.478625	127.0.0.1	127.0.0.1	MySQL	69	Request Fetch Data
4919	4.480168	127.0.0.1	127.0.0.1	TCP	56	54350 → 3306 [ACK] Seq=1391 Ack=39523 Win=368768 Len=0 TSval=966581308 TSecr=966581308
4920	4.480690	127.0.0.1	127.0.0.1	MySQL	65	Request Close Statement

driver 层面 fetchSize 的处理

堆栈信息大致如下 

应用通过 resultSet.next 向后迭代 

resultSet 中 ResultsetRowsCursor 不断向后迭代当前批次的数据, 如果当前批次的数据已经迭代完毕, 重新向 mysql 服务器发送 fetch 命令, 获取下一批次的数据 

如果应用不强行引用, 内内存中常驻的记录数量为 fetchSize 条记录, 进而 缩小需要占用的内存开销 

f5159f65bd114804b56a2710cfe3bec7.png

http://www.yayakq.cn/news/381177/

相关文章:

  • 网站空间送域名c语言建设网站
  • 新乡+网站建设在征婚网站上认识做期货
  • 网站建设设计设计公众号怎么开通原创
  • 如何编写网站建设个人网站的主题
  • 网站的登录弹窗怎么做wordpress采集图片插件
  • 网站建设需要服务器手机版刷赞网站建设
  • 网上商城网站建设wordpress登陆后可见页
  • 网站建设方案大全国内建网站流程
  • flash网站模板下载做外贸用什么网站
  • 网站信息维护亳州公司做网站
  • 学生做网站期末作业乐清论坛网乐清
  • 购买深圳网站定制开发市场调研公司存在的意义
  • 外贸网站排行赣州网上中介服务超市
  • 尼罗发表小说做的的网站是哪个wordpress 增强编辑器
  • 唐山网站制作app建筑网站 法人签字
  • 营销型网站架构师网站建设多少钱合适
  • wordpress wdone用二级域名做网站对seo
  • 阿里云模板建站教程网站和app的开发成本
  • 手机端公司网站怎么做如何做网站产品经理
  • 东八区网站建设wordpress产品展示主题
  • 做p2p网站卖赚钱吗江西建筑培训网
  • 做羞羞的专门网站二级域名免费分发站
  • 无锡所有网站设计制作优惠券网站建设制作
  • 怎么改网站模板温州网站制作计划
  • 专做服装的网站分类信息网站
  • 大型新型网站云服务器便宜
  • 有什么发布做投标报价的网站重庆怎么在网站上做广告
  • 做网站除了有服务器还需要什么小程序电商模板
  • 外贸网站建设平台有哪些网站备案安全承诺书
  • 好看的网站 你明白吗个人网站如何备案