Tiers
Therefore, a Free Tier account can not have a payable set of apps or databases, nor can a Standard Tier account have a free set of apps.
We try and keep things very simple at Gigalixir, so we only offer two account / pricing tiers.
The Free Tier and the Standard Tier.
Free Account Tier
The Free Tier is, well…free! It also requires no credit card and the usage is free.
But, your apps are limited to one instance up to size 0.5 and one free tier database.
Although the database is free, it is really not suitable for production use. You are limited to 2 connections, 10,000 rows, and no backups. Idle connections are terminated after 5 minutes.
Also, on the Free Tier, if you haven’t deployed an app for over 30 days, we will send you an email to remind you to keep your account active. If you do not keep your account active, your app may be scaled down to 0 replicas.
We know this isn’t ideal, but we think it is better than sleeping instances in most cases.
We really want to be here as an asset to the global developer community with our Free Tier. We designed this tier to be of service to students, educators, testers, and new engineers, so we appreciate your understanding of the above situation as the free tier does cost us a lot of money to run for the developer community.
Standard Account Tier
The Standard tier is ideal for development, testing, and running production applications.
CPU, bandwidth, and power are still free on the Standard Account Tier, however you pay $5 for every 100MB of memory per month ($0.05/MB/Month/Replica).
Please check Database Pricing for standard tier database costs.
Tier Comparison
Instance Feature | FREE Tier | STANDARD Tier |
---|---|---|
Zero-downtime deploys | YES | YES |
Websockets | YES | YES |
Automatic TLS | YES | YES |
Log Aggregation | YES | YES |
Log Tailing | YES | YES |
Remote Observer | YES | YES |
No Connection Limits | YES | YES |
No Daily Restarts | YES | YES |
Custom Domains | YES | YES |
Postgres-as-a-Service | YES | YES |
SSH Access | YES | |
Vertical Scaling | YES | |
Horizontal Scaling | YES | |
Clustering Multiple | YES | |
Apps Team Permissions | YES | |
No Inactivity Checks | YES | |
Dedicated Ingress | AVAILABLE |
For a comparison of database tiers, see Database Tier Comparison.
Gigalixir vs Heroku Feature Comparison
Feature | Gigalixir FREE Tier | Gigalixir STANDARD Tier | Heroku Free | Heroku Standard | Heroku Performance |
---|---|---|---|---|---|
Web sockets | YES | YES | YES | YES | YES |
Log Aggregation | YES | YES | YES | YES | YES |
Log Tailing | YES | YES | YES | YES | YES |
Custom Domains | YES | YES | YES | YES | YES |
Postgres-as-a-Service | YES | YES | YES | YES | YES |
No sleeping | YES | YES | YES | YES | |
Automatic TLS | YES | YES | YES | YES | |
Preboot | YES | YES | YES | YES | |
Zero-downtime deploys | YES | YES | |||
SSH Access | YES | YES | |||
Remote Observer | YES | YES | |||
No Connection Limits | YES | YES | |||
No Daily Restarts | YES | YES | |||
Flexible Instance Sizes | YES | ||||
Clustering | YES | ||||
Horizontal Scaling | YES | YES | YES | ||
Built-in Metrics | YES | YES | |||
Threshold Alerts | YES | YES | |||
Dedicated Instances | YES | ||||
Autoscaling | YES |
Pricing Details
In the free tier, everything is no-credit-card free. Once you upgrade to the standard tier, you pay $10 for every 200MB of memory per month ($0.05/MB/Month/Replica).
CPU, bandwidth, and power are free.
See our cost estimator to calculate how much you should expect to pay each month.
Please keep reading for exactly how we compute your bill.
Every month we calculate the number of replica-size-seconds
used and charge your credit card.
replica-size-seconds
is how many replicas you ran multiplied by the size of each replica multiplied by how many seconds they were run. This is aggregated across all your apps and is prorated to the second.
For example, if you ran a single replica of size 0.5 (500 MB) for the entire month, your bill will be:
(1 replica) * (500 MB) * (1 month) * (0.05 $/MB-Month-Replica) = $25.00
If you ran a single replica of size 1.0 (1000 MB) for 10 days, then scaled it up to 3 replicas, then 10 days later scaled the size up to 2.0 and it was a 30-day month, then your bill would be
[ (1 replica) * (1000 MB) * (1/3 month)
+ (3 replicas) * (1000 MB) * (1/3 month)
+ (3 replicas) * (2000 MB) * (1/3 month) ]
* (0.05 $/MB-Month-Replica) = $166.67
For database pricing, see Database Pricing.
Database Sizes & Pricing
For information on database sizes and pricing, see:
Dedicated Ingress Pricing
For information on dedicated ingress pricing, see Dedicated Ingress Pricing.
Replica Sizing
- A replica is a docker container where your app runs.
- Replica sizes are available in increments of 0.1 between 0.2 and 384, but for the higher sizes you’ll need to contact us first.
- 1 size unit is 1GB memory, 1 CPU share, and 564mbps egress bandwidth.
-
1 CPU share is 200m as defined using Kubernetes CPU requests or roughly 20% of a core guaranteed.
- If you are on a machine with other containers that don’t use much CPU, you can use as much CPU as you like.
-
Memory is defined using Kuberenetes memory requests.
- If you are on a machine with other machines that don’t use much memory, you can use as much memory as you like.
- Memory and CPU sizes can not be adjusted separately.
Why was my App Scaled Down to 0?
On the Free Tier, apps are scaled down to 0 if there have been no deploys for 30 days. We send a warning email after 23 days. To prevent this from happening, make sure you either deploy often or upgrade to the Standard Tier.
Custom Domain Pricing
Gigalixir allows custom domains for each application. Up to 100 custom domains are included free for each application.
Additional custom domains can be purchased by contacting us.
Limits
Gigalixir is designed for Elixir/Phoenix apps and it is common for Elixir/Phoenix apps to have many connections open at a time, as well as, have connections open for long periods of time.
Because of this, we do not limit the number of concurrent connections or the duration of each connection 1 2.
We also know that Elixir/Phoenix apps are designed to be long-lived and potentially store state in-memory, so we do not restart replicas arbitrarily.
In fact, replicas should not restart at all, unless there is an extenuating circumstance that requires a restart.
For apps that require extreme high availability, we suggest that your app be able to handle node restarts just as you would for any app not running on Gigalixir.
That said, we do have a number of limits in order to prevent abuse which are listed below. If you need to request a higher limit, contact us and we’ll do our best to accomodate you.
Resource | Limit |
---|---|
Log Drains | 5 |
Apps | 100 |
SSH Keys | 50 |
Collaborators | 25 |
Config Vars | 32kb |
Slug Size | 500mb |
Repo Size | 1gb |
Build Time | 30m |
Disk | 10gb |
Bandwidth | 1tb/mo |
Exceeding Usage Limits
What happens when an app exceeds the memory limit, even briefly?
When you go over the memory limit on a replica, your pod will get OOMKilled and restarted.
Alhtough not instantaneous, the timing is pretty close to it.
What happens when an app exceeds the memory limit for a sustained period of time?
Alhtough not instantaneous, When you go over the memory limit on a replica, your pod will get OOMKilled and restarted.
This will continue until the memory limit is increased for your service.
What happens if an app exceed our CPU limit, even briefly?
CPU cycles are throttled, so should not see your application shutdown directly related to CPU usage. What you will experience is that your app will get slower.
What happens if an app exceeds the CPU limit for a sustained period of time?
CPU cycles are throttled, your app will stay in a slower state for the duration of the exceeded limit.
hen we go over the limits, does this show up in our log drain so that we can trigger alerts/notifications to our team?
The errors would show up as an OOMKilled status, which shows up in the logs, allowing you to trigger alerts and notifications.
-
Because Gigalixir runs on Google Compute Engine, you may bump into an issue with connections that stay idle for 10m. For more information and how to work around it, see https://cloud.google.com/compute/docs/troubleshooting ↩
-
We do have a timeout of 60 minutes for connections after an nginx configuration reload. If you have a long-lived websocket connection and our nginx configuration is reloaded, the connection will be dropped 60 minutes later. Unfortunately, nginx reloads happen frequently under Kubernetes. ↩