paas服务上web dynos的自动伸缩

autoscalebot的Python项目详细描述


autoscalebot有一个简单的目标:让扩展paas服务成为您可以不用担心的事情。现在,它只支持heroku和简单的请求时间伸缩。

下一个版本将支持其他paas堆栈,以及可配置的度量和决策后端。autoscalebot也喜欢django,而且玩得很好。



``` pip安装autoscalebot```,并将其添加到'requirements.txt`

>2。在python路径的某个地方创建一个设置文件。我们通常称之为"autoscale\u settings.py",但您可以随意调用它。
3.为应用程序设置这些设置以及任何可选的调整设置。例如,请参见autoscale\u settings.py.dist。

``python
heroku\u app\u name="my app name"
heroku\u api\u key="1234567890abcdef1234567890abcdef"
```

4。将自动缩放添加到"procfile":

```
autoscaleworker:autoscalebot--settings=autoscale\settings
```



``` pip安装autoscalebot```,并将其添加到'requirements.txt`

>2。在"settings.py"中设置这些必需的设置,以及任何可选的调整设置。在下面设置列表中的所有名称前加上"autoscale"前缀

``python
autoscale\u heroku app\u name="my app name"
autoscale\u heroku api\u key="1234567890abcdef1234567890abcdef"
```

3。如果您想要内置的测试视图:

*settings.py:

`` python
已安装的应用程序+=("autoscalebot",)
`````

*url.py:

`` python
`` url patterns+=patterns('',
url(r'^',include('autoscalebot.urls,app_name="autoscalebot",namespace="autoscalebot"),,,

````


4.将其添加到您的proc文件中:

```
autoscaleworker:project/manage.py运行autoscalebot。如果它连续超出这些限制足够的次数,则会根据需要放大或缩小应用程序。该描述的每个部分都可以通过设置进行配置。请注意,运行autoscalebot需要一个工人dyno,所以如果您在大多数情况下都在运行一个dyno,那么它不会为您节省任何现金。不过,它不必在Heroku上运行-任何启用Internet的计算机都可以。



Available settings
---------


AutoScalebot有一系列设置,因此您应该能够根据大多数需要对其进行调整。

*`Heroku应用程序名`

**必需*。应用程序的名称,即"Dancing-Forest-1234"。

*`Heroku_API_key`

**必需*。您的API密钥-您可以在[帐户页](https://api.heroku.com/account)上获取该密钥。

*`heartbeat_interval_in_seconds`

*心跳检查之间的秒数。默认为"30"。

*`heartbeat\u url`

*应命中url autoscale,并期望在给定时间内得到响应。默认为`/autoscalebot/heartbeat/`

*`max_response_time_in_ms`

*在将响应计算为"太慢"之前,响应所需的最长时间。默认值为"1000"。

*`min_response_time_in_ms`

*在计算为"太快"之前,响应所需的最短时间。默认值为"200"。

*`在`

*自动缩放前的连续失败次数(超时或500秒)之后,无法缩放`。默认值为"3"。

*`在`

*自动缩放删除动态之前的连续通过次数。默认为"5"。

*`max_dynos`

*绝对最大动态数。默认为"3"。此值可以是整数,也可以是时间/最大值对的字典。例如,

`` python
`将绝对最大值设置为5 dynos
将最大值设置为5 dynos
本地时间上午9点到下午5点,否则设置为5 dynos,否则设置为2 dynos。
最大值设置为{
"0:00":2,
"9:00":5,
"17:00":2
}

对于Django,这是:
时区='America/Vancouver'
````

*`Min-dynos`

*绝对最小dynos数。默认为"1"。此值可以是整数,也可以是时间/最大值对的字典。例如,

`` python
将绝对最小值设置为2 dynos
min dynos=2

1
}
````

*`increment`
*缩放时要添加或删除的动态数。默认为"1"。

*`notification_backends`
*调用所有通知请求的后端列表。默认为`[]

*`notify_if_scale_diff_exceeds_threshold`
*(v0.3)与下面的设置配对,如果给定时间段内的比例差异超过阈值,此设置将调用"notify_backends"。例如,如果我在30分钟内看到一个超过10倍的比例尺,这个网站就会发生一些干扰。我可能想知道。默认为"无",并被禁用。

*`如果缩放差异超过间隔(单位:分钟)`
*(v0.3)计算差异的时间段,则通知。默认为"无"。

*"如果需要超过最大值,则通知"当应用程序处于"最大动态"且响应太慢时,调用"通知"后端。这可能意味着"max_dynos"太低了,但如果没有您的明确指示,autoscalebot将无法放大。默认为"true"。

*"notify_if_needs_below_min `
*当应用程序处于"min_dynos"时,调用"notify_backends",并且响应低于缩小最小值(但高于1)。如果"min_dynos"设置得太低,则有助于学习。默认值为"false"。

*"notify_on撸scale撸fails"
*如果对缩放API的调用因任何原因失败,则调用"notify撸backends"。请注意,缩放失败不会伤害任何东西,并且在下一次心跳中将再次尝试缩放。默认为"false"。

*`notify_on_every_scale`
*调用每个scale上的"notify_backends"。默认为"false"。

*"notify_on_every_ping"
*每次ping都调用"notify_backends"。默认为"false"。



notification
----


autoscalebot支持通知后端,因此可以在发生缩放时通知您。它带有一些后端。欢迎其他后端的拉式请求!内置的是:

*`consolebackend`,它将消息打印到控制台,
*`djangoemailbackend`,它在django项目中使用时向"管理员"发送电子邮件,
*`loggerbackend`,它将消息发送到python记录器。
*`testbackend`,它将消息添加到列表中,并用于r单元测试。

要使用后端,只需在"通知后端"中指定它们。例如:

``python
notification\u backends=[
`autoscalebot.backends.notification.djangoemailbackend',
`autoscalebot.backends.notification.consolebackend',
]
````


beat url将测试你的应用程序在扩展时最可能遇到的瓶颈。捆绑的django应用程序提供了一个访问缓存、数据库和磁盘IO。为了使autoscale适合您的应用程序,您最好编写一个自定义视图来模拟用户最常见的操作。








当然,问题是一旦heroku杀死了你的dyno,新的collectstatic必须重新运行,然后才能满足请求,这可能需要一段时间。` autoscalebot的心跳有一个非常好的副作用:如果你把它们设置得足够低(小站点每几分钟一次),并且你的大小适当的最小化,每个dyno都会有流量,而heroku永远不会杀死它们。*

*大修-切换到可插入后端以进行监视、决策、缩放和通知。
*基于时间的通知阈值
*设置为在缩放之间具有最小的冷却时间





—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————或以任何方式隶属于希罗库的。"heroku"是heroku的版权所有。

autoscalebot本身的代码学分在authors文件中。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Android中Axis2 web服务的java解析响应   java读取Dockerfile命令时遇到问题:是否可以将cd刻录到jar文件中?那么tarcf是做什么的呢?   java如何防止gcmTaskService periodicTask在上一个任务尚未完成时再次运行?   jquery希望使用Java生成自动登录程序   在Hibernate中检索用BigInteger映射的属性时出现java问题   与错误用户连接时发生java错误   java Hibernate+c3p0池+ehcache失败启动   JAVAlang.ClassNotFoundException:org。mysql。JDBC无法解决,添加了mysql连接器   java如何在其键包含JSTL中的点时访问映射值?   packageprivate类中的Java方法可访问性?   java如何将文件转换为StorageObject(谷歌API)   java apache commons httpclient 4.23表单登录问题不同请求中使用的不同会话cookie   所有组件的java一个侦听器instance或每个组件的一个实例   重新启动应用程序后,不会保存ListView中的java更新   java如何修复libgdx中的屏幕无渲染   java在使用mongotemplate时遇到ClassNotFound异常