Ironbin


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

高并发Web项目

发表于 2020-04-08 | 分类于 高并发 | | 阅读次数:

Load average

负载对应的是一个数字:load average: 1.02 1.04 1.30,它们分别表示:1分钟、5分钟、15分钟内系统的平均负载。这里面最关键的是15分钟负载,相对于1分钟反应的是短时状况,它反应的是一定时间的压力。

可以将一个cpu内核理解为一条车道,负载为0表示无车,0.5表示车道内有一半的车,1表示车道内已经开满了车,超过1则表示已经有车在等待进入车道。所以对于一个内核,负载不要长期超过1。

如果有多个物理cpu,每个cpu又有多个内核,则不应该超过的负载为:cpu数 x 内核数

OSX:

1
2
3
4
5
# 查看负载
> sysctl -n vm.loadavg

# 查看cpu
> sysctl machdep.cpu

查看CPU重要的参数是:

1
2
3
# CPU 内核数
machdep.cpu.core_count: 4
machdep.cpu.thread_count: 8

Linux:

1
2
3
4
5
# 查看负载
> top

# 查看cpu
> cat /proc/cpuinfo

Tomcat 优化配置

maxThreads:允许的最大线程数,默认值为200

acceptCount:当请求数超过最大线程数时,接受排队的请求个数,默认值为100

  • 如果设的较小,超出的请求会就直接被拒绝
  • 如果设的较大,可能就会出现大量的请求超时

As a general rule of thumb, a lightweight, high performance application should look at using a maximum of 150 (accept) threads per CPU core (so a total of 600 on a 4 core box). A more conservative setting, for more heavyweight applications would be 300 accept threads. I’d expect most requirements to be somewhere around the middle (but this will need some analysis), but this is highly situational

JMeter

TPS:Transaction Per Second 事务处理能力,每秒处理事物数(打开页面、登录、选择商品、加入购物车、下单、付款)

主要功能模块:

  • 取样器:进行脚本逻辑控制。
  • 线程组:压测场景控制。
  • 监视器:监控压测运行,获取性能指标。

参考

  • 理解Linux系统负荷
  • 性能测试 —— Tomcat、Jetty、Undertow 基准测试
  • 干货收藏!史上最强 Tomcat 8 性能优化来啦!| 原力计划

编译 Chromium WebView

发表于 2020-04-04 | 分类于 浏览器 | | 阅读次数:

在线代码

如何设计一个优雅健壮的Android WebView?

Chromium build webview 说明

Google WebView quick start

Chromium Android WebView

本文讲述如何对 Chromium Content 进行封装,对外提供一个封装好的 Android View - WebView 供第三方应用使用。代码涉及 Android WebView 和 Chromium Content 模块其中的一部分。

Android-AdvancedWebView

一个比较早的开源项目,查看这里

编译 Firfox

发表于 2020-03-28 | 分类于 浏览器 | | 阅读次数:

在线代码

从这里在线浏览代码。

tarball

tarball 是代码仓库的快照,打包了某个版本的全部代码,因为做了压缩,比直接clone下载的数据量更小,速度更稳定,也多了断点续传。国内推荐用这种方式下载,参考这里。下载后解压成仓库的流程参考这里:解压 bundle。

Mozconfig

一些编译时的配置需要放到 Mozconfig 文件里,参考这里。

编译

编译流程参考:这里。

其中遇到一些技术点:

artifact:这种方式不用编译C++相关的代码,编译速度更快。适合于面向 Java 语言的开发者。

Developer guide

和 Firefox 开发相关的说明全在这里。

Working with Mozilla source code

和 Mozilla 代码相关的说明全在这里。包括如何检出代码,提交代码,编译等。

Mozilla Source Code Directory Structure

源码目录结构,当你需要进一步熟悉各模块时,首先要区分都有哪些模块,参考:这里。一般我比较关心的几个模块:

browser:这里是浏览器的界面和主题相关代码

netwerk:网络套件库,也叫 Necko

security:包含 NSS 和 PSM 两套安全套件,NSS 包含了用于 SSL 的密码算法

view:一套跨平台的 UI 组件库,承担绘图、事件处理、滚动、透明化等

widget:它是 view 的宿主,是 view 与操作系统原生的 UI 系统的枢纽

网络层 Necko

Necko 是一个跨平台的网络库,提供了网络多层的接口。

使用 GDB 调试

关于一些使用上可能遇到的问题,请参考这里

命令行编译 Java

发表于 2019-12-01 | 分类于 Java | | 阅读次数:

编译 Java

If you are using the Hibernate native API, then you need to use the Query#setComment method like this:

1
2
3
4
5
List<Person> persons = (List<Person>) session.createQuery(
"select p " +
"from Person p ")
.setComment( "t95=firstdraft" )
.list();

运行

If you are using JPA, then you can use a QueryHint:

1
2
3
4
5
List<Person> persons = entityManager.createQuery(
"select p " +
"from Person p ", Person.class)
.setHint( "org.hibernate.comment", "t95=firstdraft" )
.getResultList();

How to intercept and modify SQL queries with the Hibernate StatementInspector

命令行编译 Java

发表于 2019-11-28 | 分类于 Java | | 阅读次数:

编译 Java

1
2
# -d 创建目录结构
% javac -d . <filename.java>

运行

1
2
3
4
5
# Linux & Mac
% java -cp jarname.jar: package.ClassName

# Windows CMD
% java -cp jarname.jar;. package.ClassName

编译 Mac cef 2623

发表于 2019-10-07 | 分类于 cef | | 阅读次数:

Fixed gclient_util after depot_tools changes

解决办法:这里

VMware 安装 MacOS 流程

发表于 2019-10-04 | 分类于 vmware | | 阅读次数:

一、安装流程

  1. 安装 VMware
  2. 安装 MacOS 解锁工具
  3. 安装 MacOS 系统
  4. 配置虚拟机硬件参数

下面有几个说明文章比较详细,基本按照步骤操作就可成功:

  • VMware 虚拟机安装 macOS 10.14 教程
  • VMware虚拟机安装黑苹果MacOS Mojave系统详细教程

二、常见问题

  1. 新建虚拟机找不到 MAC 系统选项

解决:安装 MacOS 虚拟机解锁工具,从这里下载。

  1. 苹果虚拟机启动花屏

解决:安装 MacOS 虚拟机解锁工具,从这里下载。

  1. 不能登录 App Store

解决:更新虚拟机硬件配置,修改虚拟机 .vmx 文件,参考这篇文章

好喝的啤酒

发表于 2019-07-25 | 分类于 drink | | 阅读次数:

IPA

Indian Pale Ale(印度淡色艾尔),当年英国殖民印度,需要从英国运送啤酒到印度,为了延长啤酒保存时间,就在酒内添加大量啤酒花,使啤酒在桶内发酵好几个月。在这个过程中糖分被消耗掉的酒体保存了高度的酒精含量,导致IPA看起来酒体清淡,其实酒花香气和苦度都非常高。

LAGER(拉格)

源自德国,采用低温发酵法,酒体清淡泡沫丰富,是常见的工业啤酒酿造方法。一般来说普通工业啤酒基本上都是拉格,比如燕京,青岛,雪花。

我的周

发表于 2019-07-25 | 分类于 week | | 阅读次数:

做人的背景

浪子回头金不换
晚节不保

Jitsi Meet 视频技术

发表于 2019-07-12 | 分类于 jitsi | | 阅读次数:
1
$ git push -u origin --tags

收到下面的错误提示:

1
2
3
4
5
6
7
...

remote: GitLab: Failed to authorize your Git request: internal API unreachable
To <...>
! [remote rejected] origin/HEAD -> origin/HEAD (pre-receive hook declined)

...
阅读全文 »
12…12
程学彬

程学彬

117 日志
48 分类
99 标签
Creative Commons
Links
  • ShinySky
0%
© 2014 — 2020 程学彬