lucky-cluster v0.3.1

Boot multiple lucky processes

lucky-cluster

When a lucky app boots, it's only 1 single process. If you're running on a beast server, then you're missing out on some free performance! This shards lets you boot multiple processes of your lucky app.

Installation

NOTE This version requires Lucky 0.15.0 or later.

  1. Add the dependency to your shard.yml:
dependencies:
  lucky-cluster:
    github: jwoertink/lucky-cluster
  1. Run shards install

Usage

  1. Open src/start_server.cr
  2. Add your require below the app require
require "./app"
require "lucky-cluster"
  1. Replace AppServer.new with Lucky::Cluster.new
app_server = Lucky::Cluster.new
  1. Remove the Signal::INT.trap block. lucky-cluster handles that for you.

  2. You can remove the extra puts in there too, if you want.

  3. Optionally, specify the number of processes to boot with app_server.threads = 2

Once done, your src/start_server.cr file should look like this:

require "./app"
require "lucky-cluster"

if Lucky::Env.development?
  Avram::Migrator::Runner.new.ensure_migrated!
end
Habitat.raise_if_missing_settings!

app_server = Lucky::Cluster.new

# This boots a new process for each thread.
app_server.threads = ENV.fetch("MAX_THREADS") { "10" }.to_i
# You can also use this:
# app_server.threads = System.cpu_count.to_i32

app_server.listen

Gotchas

Linux will handle load balancing the processes for you, macOS will not. So if you try to load test this on a mac, you're going to have a bad time!

Development

I don't know yet. Just make sure you don't break this thing, and if you know how I can write specs for this, please help!

Contributing

  1. Fork it (https://github.com/jwoertink/lucky-cluster/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

Mentions

Thanks to the work done on Spider-Gazelle for showing how they did it.

Repository

lucky-cluster

Owner
Statistic
  • 15
  • 2
  • 1
  • 0
  • 2
  • almost 2 years ago
  • November 7, 2018
License

MIT License

Links
Synced at

Thu, 21 Nov 2024 20:36:37 GMT

Languages