Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #21090
| From | Twirlip of the Mists <twirlip@killfile.me.now.invalid> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: single instance |
| Date | 2013-01-06 20:04 -0500 |
| Organization | Zamps Anonymous |
| Message-ID | <kcd6va$c9a$1@news.mixmin.net> (permalink) |
| References | (3 earlier) <kc4rpu$4at$1@localhost.localdomain> <PNidnQgKw5vavHXNnZ2dnUVZ8t-dnZ2d@bt.com> <kc9onj$bp9$1@localhost.localdomain> <kc9psj$5k0$1@news.mixmin.net> <kca2g0$gsb$1@localhost.localdomain> |
On Sat, 5 Jan 2013 20:29:52 +0000 (UTC), Martin Gregorie wrote: > On Sat, 05 Jan 2013 13:02:57 -0500, Twirlip of the Mists wrote: > >> C's atexit is probably vulnerable to the latter two, mitigatable only >> partially by registering signal handlers. >> > I don't think any of these approaches are immune to system crashes, but > should be good enough to prevent single processes, whether launched by a > user or automatically by the system, from running more copies that are > wanted. As I concluded at the end of my post. > I'd normally use a shell script or programmed equivalent to launch a more > complex set of processes. Its first action would be to assume a crash had > ocurred and do a full clean-up: if the system had shut down normally the > clean-up would still run but would not find anything to do. That may make sense for a lot of systems. >> The only thing I can think of that even the thunderstorm won't fuck up >> is an active system where the lockfile is only considered valid if some >> associated "heartbeat" is still going, so, the lockfile invalidates on a >> deadman switch even if not deleted. >> > Yes, that would work too: though it sounds as if the mere existence of a > small 'heartbeat' process could obviate the need for a lockfile: Uh, something still has to point to the location of the heartbeat process. Either that needs a fixed but configurable port, or else the lockfile (or some sort of file, anyway) is needed (itself in a fixed location) to point to the port-du-jour. > if the heartbeat process is running and agrees that the limit for your > process type hasn't been reached, your process can start. "The limit for your process type"? That doesn't sound like you're thinking of an app that should, by default, run as a single instance that "absorbs" any more that the user triggers by e.g. double-clicking documents, more for efficiency reasons or to avoid race conditions with its data files than for any other reason. It sounds more like you're thinking of a situation involving enforcing policy against users for reasons that have nothing to do with those users' own wishes, say to limit their resource consumption on a work computer that isn't theirs. That's a whole different kettle of fish, but it's a kettle of fish best handled at the OS level much of the time: * The resource use at the guy's own cubicle box is his own business. If he squanders it and then can't get his work done, he can be let go for poor productivity or whatever. * The resource use on shared machines, e.g. a network server supplying services to a whole office block, can be managed by that machine's OS having per-user quotas set up, if the users have accounts on it, or by the server software enforcing quotas. The latter is similar to how a publicly-exposed web service without authentication might prevent one user hogging too many resources -- per-connecting-IP resource quotas past which it slows down or times out, intentional latency high enough to limit the damage a rampaging bot client can do from rapid-fire sequential requests but low enough not to nuisance a human user with human reaction times, etc. Some situations likely in the wild 'net are much less so on the company LAN, of course, such as the rampaging bot. And, if something that egregious ever does occur, whoever's responsible can be fired. In a workplace environment, with software customized for that particular workplace, you can generally go much further in deciding things that users should and should not do than with software intended for a general audience including people running it on their own hardware with their own time and paying their own utility bills. Even then, it's often better to audit rather than strictly ration use, and then hold employees accountable for unnecessary and excessive usage based on the audit reports. Of all the different kinds of bureaucratic red tape out there, the machine-enforced variety is easily the worst, because it's typically *impossible* to circumvent without going through the proper channels, even in direst emergency with some sort of looming deadline and, with characteristically bad timing, the pointy-haired single point of failure that holds the needed pad of permission slips home sick. In all other situations, "contrition is easier than permission" should be a possible approach, on pain of losing your job if your corner-cutting was frivolous rather than out of good faith perceived necessity. Though it certainly should not be the default. (Of course, because machine-enforced red tape *is* so hard to circumvent, the bureaucrats *really* love it...) Another thing to note is that all of the possibly-limited computing resources -- CPU, disk, memory, bandwidth -- are so cheap these days that a company can easily afford to have internal servers with 10x or more capacity than the likely peak load from normal employee use of its services, such that it would take truly exceptional circumstances (a 10x bigger than normal demand, or deliberate bad faith or a major malware infestation) for it to be unable to meet demand. The result is that the cost in enforcing quotas (or even in auditing usage, possibly) could actually exceed the benefit (the cost in enforcing has to factor in the eventuality of someone legitimately needing more than their quota, and the relevant permission slip being slow or difficult to obtain, with a deadline; and the cost of both has to factor in the added system complexity and accompanying bugs; bugs in enforcement are quite likely to result in people being locked out of the system that are *under* quota, since half of errors can be expected to be in that direction). The other limited resource is money, to pay for electricity and (external) bandwidth whose use may go up. But with efficient hardware an employee would have to cause very big jumps in server loads to cost noticeable amounts of marginal hydro-bill dollars, and the firewall can work both ways to make excessive use of external bandwidth unlikely. Business connections tend to be non-metered anyway, so while congestion can be a problem overuse won't directly cost money. (It might indirectly do so, if revenue-generating public-facing services are knocked out. Those should probably be on a separate pipe from the one feeding the offices' internet connectivity, routed differently enough that congesting one won't impair the other. That's equally important in reverse, so if the web server's under a DDoS or unusually high legitimate demand it won't cripple the office workers that need to deal with the problem by cutting them off from email, Wikipedia, Google, et. al.) -- Hexapodia is the key insight.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-01 12:23 -0800
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-01 16:40 -0500
Re: single instance Robert Tomsick <robert+usenet@tomsick.net> - 2013-01-03 01:20 -0500
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-03 00:55 -0800
Re: single instance Knute Johnson <nospam@knutejohnson.com> - 2013-01-03 19:31 -0800
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-03 19:49 -0800
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-03 19:56 -0800
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-04 12:18 -0500
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-04 10:22 -0800
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-04 13:44 -0500
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-04 11:03 -0800
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-04 14:12 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-05 21:56 -0500
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-06 19:22 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-06 20:23 -0500
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-06 20:43 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-06 20:47 -0500
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-06 20:51 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-06 20:24 -0500
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-06 20:46 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-06 20:58 -0500
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-06 21:08 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-06 21:19 -0500
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-06 21:31 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-06 21:41 -0500
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-06 22:00 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-06 22:11 -0500
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-07 00:23 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-02-24 18:20 -0500
Re: single instance Joshua Cranmer <Pidgeot18@verizon.invalid> - 2013-01-06 21:39 -0600
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-07 00:30 -0500
Re: single instance lipska the kat <lipskathekat@yahoo.co.uk> - 2013-01-07 08:53 +0000
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-02-24 18:18 -0500
Re: single instance lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-02-25 08:31 +0000
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-02-24 18:17 -0500
Re: single instance Lew <lewbloch@gmail.com> - 2013-01-06 17:32 -0800
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-06 20:47 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-06 20:53 -0500
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-06 21:01 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-05 21:59 -0500
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-06 19:34 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-06 20:00 -0500
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-03 07:12 -0800
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-03 09:56 -0800
Re: single instance Martin Gregorie <martin@address-in-sig.invalid> - 2013-01-03 21:05 +0000
Re: single instance Martin Gregorie <martin@address-in-sig.invalid> - 2013-01-03 22:08 +0000
Re: single instance "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2013-01-05 12:48 +0000
Re: single instance Martin Gregorie <martin@address-in-sig.invalid> - 2013-01-05 17:43 +0000
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-05 09:49 -0800
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-05 13:02 -0500
Re: single instance Martin Gregorie <martin@address-in-sig.invalid> - 2013-01-05 20:29 +0000
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-05 19:07 -0800
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-06 20:04 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-05 21:40 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-05 22:10 -0500
Re: single instance Knute Johnson <nospam@knutejohnson.com> - 2013-01-05 19:49 -0800
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-05 23:09 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-06 11:00 -0500
Re: single instance Lew <lewbloch@gmail.com> - 2013-01-06 09:41 -0800
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-06 20:41 -0500
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-15 22:51 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-15 23:12 -0800
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-15 23:49 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-15 23:16 -0800
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-15 23:52 -0800
Re: single instance Knute Johnson <nospam@knutejohnson.com> - 2013-01-16 08:46 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-16 10:46 -0800
Re: single instance markspace <markspace@nospam.nospam> - 2013-01-16 13:01 -0800
Re: single instance Knute Johnson <nospam@knutejohnson.com> - 2013-01-16 17:10 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-15 23:50 -0800
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-16 00:13 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-16 02:48 -0800
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-16 07:28 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-16 10:46 -0800
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-16 16:53 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-16 23:44 -0800
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-17 07:03 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-17 14:25 -0800
Re: single instance Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-01-17 16:31 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-17 22:11 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-17 22:36 -0800
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-16 13:34 -0500
Re: single instance Knute Johnson <nospam@knutejohnson.com> - 2013-01-16 08:45 -0800
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-16 13:29 -0500
Re: single instance Knute Johnson <nospam@knutejohnson.com> - 2013-01-16 17:14 -0800
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-16 20:20 -0500
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-16 23:52 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-17 01:44 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-18 01:47 -0800
Re: single instance Knute Johnson <nospam@knutejohnson.com> - 2013-01-18 20:50 -0800
Re: single instance Roedy Green <see_website@mindprod.com.invalid> - 2013-01-20 00:53 -0800
Re: single instance Lew <lewbloch@gmail.com> - 2013-01-20 12:00 -0800
Re: single instance Knute Johnson <nospam@knutejohnson.com> - 2013-01-20 13:33 -0800
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-02-24 18:12 -0500
Re: single instance Arne Vajhøj <arne@vajhoej.dk> - 2013-01-20 21:33 -0500
Re: single instance "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2013-01-06 13:34 +0000
Re: single instance Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2013-01-04 10:26 -0800
Re: single instance Twirlip of the Mists <twirlip@killfile.me.now.invalid> - 2013-01-04 14:04 -0500
Re: single instance stledger@lanl.gov - 2013-01-16 14:51 -0800
Re: single instance stledger@lanl.gov - 2013-01-16 15:09 -0800
csiph-web