Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 13:55
    Aaronontheweb commented #3811
  • 13:53
    Aaronontheweb commented #3811
  • 13:48
    Zetanova commented #3811
  • 13:21
    Aaronontheweb commented #3811
  • 12:15
    PetrPejcel opened #3917
  • 09:56
    Zetanova commented #3903
  • 09:42
    Zetanova commented #3811
  • 09:38
    Zetanova commented #3811
  • 09:37
    Zetanova commented #3811
  • 08:37
    Pzixel commented #3908
  • 08:20
    Zetanova synchronize #3916
  • 08:13
    Horusiath commented #3908
  • 08:12
    Horusiath commented #3908
  • 08:11
    Horusiath commented #3908
  • 07:58
    Horusiath commented #3284
  • 07:56
    Horusiath commented #3284
  • 07:32
    ismaelhamed commented #3284
  • 07:24
    Zetanova opened #3916
  • Sep 16 15:35
    Aaronontheweb commented #3284
  • Sep 16 07:55
    ismaelhamed commented #3284
Boban
@bobanco
@Horusiath i did some performance testing on cluster sharding with mysql as a persistence , the performance which i got was 312.5 entities per sec
Bartosz Sypytkowski
@Horusiath
@bobanco what and how you were testing? Mind to send a sample?
Boban
@bobanco
my dev machine specs:
CPU: i7 4790k
RAM: 16GB
SSD: 250 GB Samsung
basicly i was trying to see the performance of how many entities we can allocate per second
and also each entity is persistent and persists its state
Bartosz Sypytkowski
@Horusiath
but entities with remember-entities=on? all entities in one shard or maybe one entity for each shard?
Boban
@bobanco
mb this is not the true performance testing of the sharding itself
Bartosz Sypytkowski
@Horusiath
without batching, event journals are still pretty slow
Boban
@bobanco
hm does batching helps even if each persistent entity is unique?
Bartosz Sypytkowski
@Horusiath
especially then - batching is applicable, when many persistent entities are trying to persist their events at the same time
Boban
@bobanco
hm..how i can use batcing journal? or there is not ready one?
Bartosz Sypytkowski
@Horusiath
i've tested it on sqlite, sqlserver and postgres on various settings - using current defaults, I was getting around 400-700 events/sec (simply limits of full connection rountrips on ADO.NET), with batching journal - 8000-12000 events/sec
it's part of shared persistence sql lib, but it needs implementation per each concrete provider
Boban
@bobanco
does postgres has implemented it?
i mean the postgres persistence implementation
Bartosz Sypytkowski
@Horusiath
there was PR (not merged) made long ago ;) It needs to be updated
AkkaNetContrib/Akka.Persistence.PostgreSql#32
this is the PR
console app for stress tests is attached
Boban
@bobanco
will take a look
with jvm lagom framework whihc under the hood is using akka sharding and persistence i was getting troughput > 3k
same workload
Bartosz Sypytkowski
@Horusiath
lagom with cassandra?
Boban
@bobanco
oh yes
i forgot abt the cassandra
Bartosz Sypytkowski
@Horusiath
their cassandra plugin also implements some sort of request batching
Boban
@bobanco
any idea when postgres PR will get merged?
if i can get better troughput mb i can avoid convincing my team and also myself to use jvm for this microservice, cuz entire ecosystem is running on .net
and akka.net
i also made prototype on a top of orleans, it was even worse the mysql storage provider was falling :smile:
Bartosz Sypytkowski
@Horusiath
I guess mysql is not a top used storage in .net - probably most of the implementations in all libraries will end up pretty buggy
Boban
@bobanco
i can switch to postgres or cassandra
if i can avoid this issue
sharding together with persistence will give awesome scalability, only need now to find the right persistence :)
@Horusiath SqlServer persistence has implemented this batching journal right? can i use it in 1.3.1?
Bartosz Sypytkowski
@Horusiath
@bobanco not yet - I'm updating a related PR right now
I hope I'll made it in time before 1.3.1 release
Boban
@bobanco
@Horusiath thank you man
Bartosz Sypytkowski
@Horusiath
also if it's an option for you, you may want to use redis, even just for sharding-related data
@alexvaluyskiy put some work there
Joshua Garnett
@joshgarnett
@bobanco if it helps I’m going to be launching a game with Akka.Net + MySQL, so will likely be contributing improvements to that plugin. On a previous game we were using the JVM Akka + MySQL (Aurora to be specific) and targetting 50K/journals per second. With db sharding in place we were close to hitting that target
Boban
@bobanco
@joshgarnett thanks for the info, are u planing to implement the batching journal or i should take the contribution on it? 50k events per second is fairly good enough for my case
Joshua Garnett
@joshgarnett
I’m probably a month out from digging further into the changes needed, so if you need something sooner, you should give it a go
Boban
@bobanco
yh i will work on it tonight as i need to close this prototyping by the end of this week
Joshua Garnett
@joshgarnett
Good luck
Boban
@bobanco
tx :smile:
@Horusiath redis persistence is updated to be used in the last version?
Boban
@bobanco

@Horusiath i have implemented the batcing journal but it doesn't work :smile: am getting null reference exception here is log

[ERROR][08-Sep-17 23:30:19][Thread 0008][akka://system/system/akka.persistence.journal.mysql] Object reference not set to an instance of an object.
Cause: [akka://system/system/akka.persistence.journal.mysql#1985097534]: Akka.Actor.ActorInitializationException: Exception during creation ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Akka.Persistence.Sql.Common.Journal.BatchingSqlJournal`2.PreStart()
   at Akka.Actor.ActorBase.AroundPreStart()
   at Akka.Actor.ActorCell.<>c__DisplayClass168_0.<Create>b__0()
   at Akka.Actor.ActorCell.UseThreadContext(Action action)
   at Akka.Actor.ActorCell.Create(Exception failure)
   --- End of inner exception stack trace ---
   at Akka.Actor.ActorCell.Create(Exception failure)
   at Akka.Actor.ActorCell.SysMsgInvokeAll(EarliestFirstSystemMessageList messages, Int32 currentState)

here is the repo

@Horusiath Please take a look what is missing

Sean Farrow
@SeanFarrow

Hi All,

Three quick persistence queries:
Firstly, I know it uses google protocol buffers, how does it handle serialization, I couldn't find the code. I've got a custom type that doesn't currently serialize with protobuff so was wondering whether this would still be handled.
Secondly, how can I stop and rehydrate an actor after a period of time, this is a process that is offline currently so could take some time.
Finally, can someone confirm that as long as the persistence id's are the same the actor hierarchy can be changed.