asp.net mvc pdf viewer control : Add pdf files together control SDK system azure wpf .net console mongodb_%20the%20definitive%20guide%20-%20kristina%20chodorow_140135-part1781

deletedCount
The number of documents that have been removed from this collection during its
lifetime.
deletedSize
The size of the free list (all of the free space available) for this collection. This is not
just documents that have been deleted but all the space that has been preallocated,
as well.
You can only run validate on collections, not indexes, so you generally cannot tell if an
index is corrupt unless you walk it. Walk an index by running a query for every docu‐
ment in the collection hinting the desired index. Then traverse all results.
If you get an assertion about invalid BSONObj, this is usually corruption. The worst
errors are those that mention pdfilepdfile is basically the core of MongoDB’s data stor‐
age: an assertion originating from pdfile almost guarantees that your data files are
corrupt.
If you are hitting corruption, you may see something like this in your logs:
Tue Dec 20 01:12:09 [initandlistenAssertion: 10334:
Invalid BSONObj size: 285213831 (0x87040011
first element: _id: ObjectId('4e5efa454b4ae20fa6000013')
If the first element shown is garbage, there isn’t much you can do. If the first element is
viewable (as the ObjectId in this example is), you may be able to remove the corrupt
document. You can try by running:
> db.remove({_id: ObjectId('4e5efa454b4ae20fa6000013')})
Replace the "_id" with the "_id" from your log’s assertion. Note that this technique
may not work if the corruption is not limited to that document: you may still have to
repair.
Durability with Replication
Due to the majority issues discussed in Chapter 10, a write to a replica set may be rolled
back until it has been written to a majority of the set. To put together the options here
with the journaling ones above, you can say:
> db.runCommand({"getLastError" : 1"j" : true"w" : "majority"})
As of this writing, this only guarantees that the write has been written durably to the
primary and has been written (not necessarily durably) to the secondaries. Theoretically,
it is possible for a majority of the servers to crash in the 100 ms between the write being
written and it being journaled, in which case it would be rolled back on the current
primary. This is an edge case but is obviously sub-optimal. Unfortunately it is not trivial
to fix, but there are a few open bugs to change this behavior.
Durability with Replication | 329
Add pdf files together - Merge, append PDF files in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Provide C# Demo Codes for Merging and Appending PDF Document
acrobat split pdf into multiple files; how to combine pdf files
Add pdf files together - VB.NET PDF File Merge Library: Merge, append PDF files in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
VB.NET Guide and Sample Codes to Merge PDF Documents in .NET Project
adding pdf pages together; add pdf files together reader
C# Word - Merge Word Documents in C#.NET
empowers C# programmers to easily merge and append Word files with mature input Word documents can be merged and appended together according to Add references:
c# merge pdf files into one; add two pdf files together
C# PowerPoint - Merge PowerPoint Documents in C#.NET
together according to its loading sequence, and then saved and output as a single PowerPoint with user-defined location. C# DLLs: Merge PowerPoint Files. Add
break pdf file into multiple files; pdf combine two pages into one
PART VI
Server Administration
C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net
can be copied and pasted to .txt files by keeping text by a method loses the original PDF document layout and all the paragraphs are joining together, our C#
add multiple pdf files into one online; acrobat merge pdf files
VB.NET Word: How to Process MS Word in VB.NET Library in .NET
Imaging.MSWordDocx.dll", which, when used together with other online tutorial on how to add & insert controls, PDF document, image to pdf files and components
batch merge pdf; combine pdfs online
C# Excel - Merge Excel Documents in C#.NET
and appended together according to its loading sequence, and then saved and output as a single Excel with user-defined location. C# DLLs: Merge Excel Files. Add
merge pdf files; c# merge pdf files
C# TIFF: TIFF Editor SDK to Read & Manipulate TIFF File Using C#.
Support converting other files to Tiff, like Word, Excel, PowerPoint, PDF, and images. Enable to add XImage.OCR for .NET into C# Tiff imaging application
acrobat merge pdf; append pdf
CHAPTER 20
Starting and Stopping MongoDB
In Chapter 2, we covered the basics of starting MongoDB. This chapter will go into more
detail about which options are important for setting up MongoDB in production,
including:
• Commonly used options
• Starting up and shutting down MongoDB
• Security-related options
• Logging considerations
Starting from the Command Line
The MongoDB server is started with the mongod executable. mongod has many config‐
urable startup options; to view all of them, run mongod --help from the command line.
A couple of the options are widely used and important to be aware of:
--dbpath
Specify an alternate directory to use as the data directory; the default is /data/db/
(or, on Windows, \data\db\ on the MongoDB binary’s volume). Each mongod pro‐
cess on a machine needs its own data directory, so if you are running three instances
of mongod on one machine, you’ll need three separate data directories. When mon
god starts up, it creates a mongod.lock file in its data directory, which prevents any
other mongod process from using that directory. If you attempt to start another
MongoDB server using the same data directory, it will give an error:
"Unable to acquire lock for lockfilepath: /data/db/mongod.lock."
333
C# Image: C# Code to Encode & Decode JBIG2 Images in RasterEdge .
Easy to add C# JBIG2 codec controls to your image and codec into PDF documents for a better PDF compression; text to the new project folder, together with .NET
pdf merger; reader combine pdf
VB.NET PDF Text Search Library: search text inside PDF file in vb.
and find text content in multiple page adobe PDF files in .NET Our VB.NET PDF Document Add-On enables you to search for text in target PDF document by using
reader combine pdf pages; add pdf together one file
--port
Specify the port number for the server to listen on. By default, mongod uses port
27017, which is unlikely to be used by another process (besides other mongod pro‐
cesses). If you would like to run more than one mongod process on a single machine,
you’ll need to specify different ports for each one. If you try to start mongod on a
port that is already being used, it will give an error:
"Address already in use for socket: 0.0.0.0:27017"
--fork
Fork the server process, running MongoDB as a daemon.
If you are starting up mongod for the first time (with an empty data directory), it
can take the filesystem a few minutes to allocate database files. The parent process
will not return from forking until the preallocation is done and mongod is ready
to start accepting connections. Thus, fork may appear to hang. You can tail the log
to see what it is doing. You must use --logpath if you specify --fork.
--logpath
This option sends all output to the specified file rather than outputting on the
command line. This will create the file if it does not exist, assuming you have write
permissions to the directory. It will also overwrite the log file if it already exists,
erasing any older log entries. If you’d like to keep old logs around, use the --
logappend option in addition to --logpath (highly recommended).
--directoryperdb
This puts each database in its own directory. This allows you to mount different
databases on different disks, if necessary or desired. Common uses for this are
putting a local database (replication) on its own disk or moving a database to a
different disk if the original one fills up. You could also put databases that handle
more load on faster disks and lower on slower. It basically gives you more flexibility
to move things around later.
--config
Use a configuration file for additional options not specified on the command line.
This is typically used to make sure options are the same between restarts. See “File-
Based Configuration” on page 336 for details.
For example, to start the server as a daemon listening on port 5586 and sending all
output to mongodb.log, we could run this:
./mongod --port 5586 --fork --logpath mongodb.log --logappend
forked process: 45082
all output going to: mongodb.log
Note that mongod may decide to preallocate journal files before it considers itself “start‐
ed.” If it does, fork will not return to the command prompt until the preallocation has
334 | Chapter 20: Starting and Stopping MongoDB
finished. You can tail mongodb.log (or wherever you redirected the log file) to watch its
progress.
When you first install and start MongoDB, it is a good idea to look at the log. This might
be an easy thing to miss, especially if MongoDB is being started from an init script, but
the log often contains important warnings that prevent later errors from occurring. If
you don’t see any warnings in the MongoDB log on startup, then you are all set. (Startup
warnings will also appear on shell startup.)
If there are any warnings in the startup banner, take note of them. MongoDB will warn
you about a variety of issues: that you’re running on a 32-bit machine (which MongoDB
is not designed for), that you have NUMA enabled (which can slow your application to
a crawl), or that your system does not allow enough open file descriptors (MongoDB
uses a lot of file descriptors).
The log preamble won’t change when you restart the database, so feel free to run
MongoDB from an init script and ignore the logs, once you know what they say. How‐
ever, its a good idea to check again each time you do an install, upgrade, or recover from
a crash, just to make sure MongoDB and your system are on the same page.
When you start the database, MongoDB will write a document to the local.startup_log
collection that describes the version of MongoDB, underlying system, and flags used:
> db.startup_log.findOne()
{
"_id" : "spock-1360621972547",
"hostname" : "spock",
"startTime" : ISODate("2013-02-11T22:32:52Z"),
"startTimeLocal" : "Mon Feb 11 17:32:52.547",
"cmdLine" : {
},
"pid" : 28243,
"buildinfo" : {
"version" : "2.4.0-rc1-pre-",
...
"versionArray" : [
2,
4,
0,
-9
],
"javascriptEngine" : "V8",
"bits" : 64,
"debug" : false,
"maxBsonObjectSize" : 16777216
}
}
This collection can be useful for tracking upgrades and changes in behavior.
Starting from the Command Line | 335
File-Based Configuration
MongoDB supports reading configuration information from a file. This can be useful
if you have a large set of options you want to use or are automating the task of starting up
MongoDB. To tell the server to get options from a configuration file, use the -f or --
config flags. For example, run mongod --config ~/.mongodb.conf to use ~/.mon
godb.conf as a configuration file.
The options supported in a configuration file are exactly the same as those accepted at
the command line. Here’s an example configuration file:
# Start MongoDB as a daemon on port 5586
port = 5586
fork = true # daemonize it!
logpath = /var/log/mongodb.log
logappend = true
This configuration file specifies the same options we used earlier when starting with
regular command-line arguments. It also highlights most of the interesting aspects of
MongoDB configuration files:
• Any text on a line that follows the # character is ignored as a comment
• The syntax for specifying options is option = value, where option is case-sensitive
• For command-line switches like --fork, the value true should be used
Stopping MongoDB
Being able to safely stop a running MongoDB server is at least as important as being
able to start one. There are a couple of different options for doing this effectively.
The cleanest way to shut down a running server is to use the shutdown command,
{"shutdown" : 1}. This is an admin command and must be run on the admin database.
The shell features a helper function to make this easier:
> use admin
switched to db admin
> db.shutdownServer()
server should be down...
The shutdown command, when run on a primary, steps down the primary and waits
for a secondary to catch up before shutting down the server. This minimizes the chance
of rollback, but the shutdown isn’t guaranteed to succeed. If there is no secondary avail‐
able that can catch up within a few seconds, the shutdown command will fail and the
(former) primary will not shut down:
336 | Chapter 20: Starting and Stopping MongoDB
> db.shutdownServer()
{
"closest" : NumberLong(1349465327),
"difference" : NumberLong(20),
"errmsg" : "no secondaries within 10 seconds of my optime",
"ok" : 0
}
You can force the shutdown command to shutdown a primary by using the force option:
db.adminCommand({"shutdown" : 1"force" : true})
This is equivalent to sending a SIGINT or SIGTERM signal (all three of these options
result in a clean shutdown, but there may be unreplicated data). If the server is running
as the foreground process in a terminal, a SIGINT can be sent by pressing Ctrl-C.
Otherwise, a command like kill can be used to send the signal. If mongod has 10014 as
its PID, the command would be kill -2 10014 (SIGINT) or kill 10014 (SIGTERM).
When mongod receives a SIGINT or SIGTERM, it will do a clean shutdown. This means
it will wait for any running operations or file preallocations to finish (this could take a
moment), close all open connections, flush all data to disk, and halt.
Security
Do not set up publicly addressable MongoDB servers. You should restrict access as
tightly as possible between the outside world and MongoDB. The best way to do this is
to set up firewalls and only allow MongoDB to be reachable on internal network ad‐
dresses. Chapter 23 covers what connections are necessary to allow between MongoDB
servers and clients.
Beyond firewalls, there are a few options you can add to your config file to make it more
secure:
--bind_ip
Specify the interfaces that you want MongoDB to listen on. Generally you want this
to be an internal IP: something application servers and other members of your
cluster can access but is inaccessible to the outside world. localhost is fine for mon
gos processes if you’re running the application server on the same machine. For
config servers and shards, they’ll need to be addressable from other machines, so
stick with non-localhost addresses.
--nohttpinterface
By default, MongoDB starts a tiny HTTP server on a port 1000 above wherever you
started MongoDB. This gives you some information about your system, but nothing
you can’t get elsewhere and is somewhat useless on a machine you probably only
access via SSH and exposes information that should be inaccessable to the outside
world.
Security | 337
Unless you’re in development, this should be turned off.
--nounixsocket
If you’re not planning to connect via file system socket, you might as well disable
this option. You would only connect via file system socket on a machine that is also
running an application server: you must be local to use a file system socket.
--noscripting
This entirely disallows server-side JavaScript execution. Most security issues that
have been reported with MongoDB have been JavaScript-related and it is generally
safer to disallow it, if your application allows.
Several shell helpers assume that JavaScript is available on the server, notably
sh.status(). You will see errors if you attempt to run any of these helpers with
JavaScript disabled.
Do not enable the REST interface. It is disabled by default and allows running many
commands on the server. It is not intended for production use.
Data Encryption
As of this writing, MongoDB provides no built-in mechanism for encrypting data stor‐
ed. If you require data to be encrypted, use filesystem encryption. Another possibility
is manually encrypting certain fields (although MongoDB has no special ability to query
for encrypted values).
SSL Connections
By default, connections to MongoDB transfer data unencrypted. However, SSL con‐
nection support is available. Due to licensing issues the default builds do not have SSL,
but you can download a subscriber build at http://www.10gen.com, which supports SSL.
You can also compile MongoDB from source to enable SSL support. Consult your driv‐
er’s documentation on how to create SSL connections using your language.
Logging
By default, mongod sends its logs to stdout. Most init scripts use the --logpath option
to send logs to a file. If you have multiple MongoDB instances on a single machine (say,
mongod and a mongos), make sure that their logs are stored in separate files. Make
sure that you know where the logs are and have read access to the files.
MongoDB spits out a lot of log messages, but please do not run with the --quiet option
(which suppresses some of them). Leaving the log level at the default is usually perfect:
there is enough info for basic debugging (why is this slow, why isn’t this starting up,
338 | Chapter 20: Starting and Stopping MongoDB
Documents you may be interested
Documents you may be interested